Android/java Date日期相关工具类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m940034240/article/details/88716390

将Date与String/时间戳之间相互转换,日期加减,日期判断等常用操作封装到一起的工具类

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;


public class DateUtils {
    private static final SimpleDateFormat datetimeFormat = new SimpleDateFormat(
	            "yyyy-MM-dd HH:mm:ss");
	private static final SimpleDateFormat dateFormat = new SimpleDateFormat(
	            "yyyy-MM-dd");  
	private static final SimpleDateFormat timeFormat = new SimpleDateFormat(  
	            "HH:mm:ss"); 
	
	/**
	 * 日期字符串转date
	 * @param dateString
	 * @return
	 */
	public static Date StringDate(String dateString) {
	        Date date = null;
	        try {
	            date = dateFormat.parse(dateString);
	        } catch (ParseException e) {
	            e.printStackTrace();
	        }
	        return date;
    }

	/**
	 * 日期时间字符串转date
	 * @param dateString
	 * @return
	 */
    public static Date StringDateTime(String dateString) {
        Date date = null;
        try {
            date = datetimeFormat.parse(dateString);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
	
	 /** 
     * 获得当前时间戳
     */  
    public static long currentTimeMillisLong() {  
        return System.currentTimeMillis();
    } 
    /** 
     * 获得当前时间戳
     */  
    public static String currentTimeMillisString() {  
        return String.valueOf(System.currentTimeMillis());
    }
    /** 
     * 时间戳转date
     */  
    public static Date timeMillisToDate(long timeMillis) {  
        return new Date(timeMillis);
    }
    /** 
     * 时间戳转date
     */  
    public static Date timeMillisToDate(String timeMillis) {  
        return new Date(Long.parseLong(timeMillis));
    }
    /** 
     * 时间戳转对应格式的日期
     */  
    public static String formatDate(long timeMillisLong,SimpleDateFormat sdf) {
        return sdf.format(new Date(timeMillisLong));  
    }
    /**
     * 时间戳转对应格式的日期
     */
    public static String formatDate(String timeMillisLong,SimpleDateFormat sdf) {
        return sdf.format(new Date(Long.parseLong(timeMillisLong)));  
    }
    /** 
     * 日期格式yyyy-MM-dd HH:mm:ss
     */  
    public static String formatDatetime(String timeMillisLong) {
        return datetimeFormat.format(new Date(Long.parseLong(timeMillisLong)));  
    }
    /** 
     * 日期格式yyyy-MM-dd HH:mm:ss
     */  
    public static String formatDatetime(Long timeMillisLong) {
        return datetimeFormat.format(new Date(timeMillisLong));  
    }
    /** 
     * 日期格式yyyy-MM-dd
     */  
    public static String formatDate(String timeMillisLong) {
        return dateFormat.format(new Date(Long.parseLong(timeMillisLong)));  
    }
    /** 
     * 日期格式yyyy-MM-dd
     */  
    public static String formatDate(Long timeMillisLong) {
        return dateFormat.format(new Date(timeMillisLong));  
    }
    /** 
     * 日期格式HH:mm:ss
     */  
    public static String formatTime(String timeMillisLong) {
        return timeFormat.format(new Date(Long.parseLong(timeMillisLong)));  
    }
    /** 
     * 日期格式HH:mm:ss
     */  
    public static String formatTime(Long timeMillisLong) {
        return timeFormat.format(new Date(timeMillisLong));  
    }
    
    public static Calendar calendar() {  
        Calendar cal = GregorianCalendar.getInstance(Locale.CHINESE);  
        cal.setFirstDayOfWeek(Calendar.MONDAY);  
        return cal;  
    }
    
    /**
     * 获得当前Chinese月份
     */  
    public static int month() {  
        return calendar().get(Calendar.MONTH) + 1;  
    }  
  
    /** 
     * 获得月份中的第几天
     */  
    public static int dayOfMonth() {  
        return calendar().get(Calendar.DAY_OF_MONTH);  
    }  
  
    /** 
     * 今天是星期的第几天
     */  
    public static int dayOfWeek() {  
        return calendar().get(Calendar.DAY_OF_WEEK);  
    }  
  
    /** 
     * 今天是年中的第几天
     */  
    public static int dayOfYear() {  
        return calendar().get(Calendar.DAY_OF_YEAR);  
    }  
  
    /** 
     *判断原日期是否在目标日期之前
     * @param src 原日期
     * @param dst 目标日期
     */  
    public static boolean isBefore(Date src, Date dst) {  
        return src.before(dst);  
    }  
  
    /** 
     *判断原日期是否在目标日期之后
     * @param src 原日期
     * @param dst 目标日期
     */  
    public static boolean isAfter(Date src, Date dst) {  
        return src.after(dst);  
    }  
  
    /** 
     *判断两日期是否相同
     */  
    public static boolean isEqual(Date date1, Date date2) {  
        return date1.compareTo(date2) == 0;  
    }  
  
    /** 
     * 判断某个日期是否在某个日期范围
     * @param beginDate 
     *            日期范围开始 
     * @param endDate 
     *            日期范围结束 
     * @param src 
     *            需要判断的日期
     */  
    public static boolean between(Date beginDate, Date endDate, Date src) {  
        return beginDate.before(src) && endDate.after(src);  
    }  
  
    /** 
     * 获得当前月的最后一天 
     * <p> 
     * HH:mm:ss为0,毫秒为999
     */  
    public static Date lastDayOfMonth() {  
        Calendar cal = calendar();  
        cal.set(Calendar.DAY_OF_MONTH, 0); // M月置零  
        cal.set(Calendar.HOUR_OF_DAY, 0);// H置零  
        cal.set(Calendar.MINUTE, 0);// m置零  
        cal.set(Calendar.SECOND, 0);// s置零  
        cal.set(Calendar.MILLISECOND, 0);// S置零  
        cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1);// 月份+1  
        cal.set(Calendar.MILLISECOND, -1);// 毫秒-1  
        return cal.getTime();  
    }  
  
    /** 
     * 获得当前月的第一天 
     * <p> 
     * HH:mm:ss SS为零
     */  
    public static Date firstDayOfMonth() {  
        Calendar cal = calendar();  
        cal.set(Calendar.DAY_OF_MONTH, 1); // M月置1  
        cal.set(Calendar.HOUR_OF_DAY, 0);// H置零  
        cal.set(Calendar.MINUTE, 0);// m置零  
        cal.set(Calendar.SECOND, 0);// s置零  
        cal.set(Calendar.MILLISECOND, 0);// S置零  
        return cal.getTime();  
    } 
    
    /** 
    *字符串的日期格式的计算 
    */  
    public static int daysBetween(String smdate,String bdate){
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        Calendar cal = Calendar.getInstance();
        long between_days = 0;
        try {
            cal.setTime(sdf.parse(smdate));
            long time1 = cal.getTimeInMillis();
            cal.setTime(sdf.parse(bdate));
            long time2 = cal.getTimeInMillis();
            between_days = (time2-time1)/(1000*3600*24);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return Integer.parseInt(String.valueOf(between_days));
    }
    /**
     * 计算两个日期之间相差的天数
     * @param smdate 较小的时间
     * @param bdate  较大的时间
     * @return 相差天数
     * @throws ParseException
     */
    public static int daysBetween(Date smdate,Date bdate)
    {
        int day = -1;
        if(smdate!=null&&bdate!=null){

            Calendar aCalendar = Calendar.getInstance();

            aCalendar.setTime(smdate);

            int day1 = aCalendar.get(Calendar.DAY_OF_YEAR);

            aCalendar.setTime(bdate);

            int day2 = aCalendar.get(Calendar.DAY_OF_YEAR);

            day = day2 - day1;

        }
        return day;
    }

    /**
     * 判断传入时间是AM或PM,AM输出0,PM输出1
     * @param dateStr
     * @return
     */
    public static int checkAMPM(Date dateStr){
        GregorianCalendar cal = new GregorianCalendar();
        cal.setTime(dateStr);
        return cal.get(Calendar.AM_PM);
    }

    /**
     * 为日期增加毫秒
     */
    public static Date DateAdd(Date date,long times){
        Date newDate = null;
        if(date!=null){
            long dateOfTimes = date.getTime();
            long calculateTimes = dateOfTimes + times;
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(calculateTimes);
            newDate = calendar.getTime();
        }
        return newDate;
    }

    /**
     * 为日期添加年(year传负数则为减去年)
     */
    public static Date DateAddYear(Date date, int year){
        Date newDate = null;
        if(date!=null){
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.add(Calendar.YEAR, year);
            newDate = calendar.getTime();
        }
        return newDate;
    }

    /**
     * 为日期添加月(month传负数则为减去月)
     */
    public static Date DateAddMonth(Date date, int month){
        Date newDate = null;
        if(date!=null){
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.add(Calendar.MONTH, month);
            newDate = calendar.getTime();
        }
        return newDate;
    }

    /**
     * 为日期添加日(day传负数则为减去日)
     */
    public static Date DateAddDay(Date date, int day){
        Date newDate = null;
        if(date!=null){
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.add(Calendar.DATE, day);
            newDate = calendar.getTime();
        }
        return newDate;
    }

    /**
     * 为日期添加小时(day传负数则为减去小时)
     */
    public static Date DateAddHour(Date date, int hour){
        Date newDate = null;
        if(date!=null){
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.add(Calendar.HOUR_OF_DAY, hour);
            newDate = calendar.getTime();
        }
        return newDate;
    }

    /**
     * 为日期添加分钟(day传负数则为减去分钟)
     */
    public static Date DateAddMinute(Date date, int minute){
        Date newDate = null;
        if(date!=null){
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.add(Calendar.MINUTE, minute);
            newDate = calendar.getTime();
        }
        return newDate;
    }

    /**
     * 为日期添加分钟(day传负数则为减去分钟)
     */
    public static Date DateAddSecond(Date date, int second){
        Date newDate = null;
        if(date!=null){
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.add(Calendar.SECOND, second);
            newDate = calendar.getTime();
        }
        return newDate;
    }
}

猜你喜欢

转载自blog.csdn.net/m940034240/article/details/88716390