Java 日期处理工具类

目录

1、获取当前系统日期()yyyy-MM-dd)

2、获取当前系统时间(HH:mm:ss)

3、获取当前系统时间

4、获取当前时间字符串

5、日期字符串转日期类型

6、获取周岁

7、两个时间之间相差距离多少天

8、校验未来日期

9、比较日期

10、获取指定时间

11、判断是否为闰年

12、获取指定时间的年、月、日


1、获取当前系统日期()yyyy-MM-dd)

/**
 * 获取当前系统日期
 * 
 * @return 当前日期字符串,格式为:"yyyy-MM-dd"
 */
public static String getCurrentDate() {
	SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
	Date today = new Date();
	String todayStr = df.format(today);
	return todayStr;
}

2、获取当前系统时间(HH:mm:ss)

	/**
	 * 获取当前系统时间
	 * 
	 * @author liucy
	 * @return 当前日期字符串,格式为:"HH:mm:ss"
	 */
	public static String getCurrentTime() {
		SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
		Date now = new Date();
		String nowStr = df.format(now);
		return nowStr;
	}

3、获取当前系统时间

    /**
	 * 获取当前系统时间
	 * 
	 * @author liucy
	 * @return 当前日期字符串,格式为:"yyyy-MM-dd HH:mm:ss"
	 */
	public static String getCurrentDateTime() {
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date today = new Date();
		String todayStr = df.format(today);
		return todayStr;
	}

4、获取当前时间字符串

	/**
	 * 获取当前时间字符串
	 * 
	 * @author liucy
	 * @return 当前时间字符串,格式为:"yyyyMMddHHmmss"
	 */
	public static String getTimeString() {
		SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
		Date today = new Date();
		String todayStr = df.format(today);
		return todayStr;
	}

5、日期字符串转日期类型

	/**
	 * 日期字符串转日期类型
	 * @author liucy
	 * @param dateStr 日期字符串
	 * @param formatStr 格式化样式 例:yyyy-MM-dd
	 * @return date
	 */
	public static Date strToDate(String dateStr, String formatStr) {
		if (formatStr==null || "".equals(formatStr)) {
			formatStr = "yyyy-MM-dd";
		}
		SimpleDateFormat format = new SimpleDateFormat(formatStr);
    	Date date = null;
    	try {
    		date = format.parse(dateStr);
		} catch (ParseException e) {
		    log.info("", e);
		}
		return date;
	}

6、获取周岁

	/**
	 * 获取周岁
	 * @param birthday
	 * @return
     */
	public static int getCurrentAge(String birthday,String date){
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		try {
			Calendar curr = Calendar.getInstance();
			Calendar born = Calendar.getInstance();
			curr.setTime(sdf.parse(date));
			born.setTime(sdf.parse(birthday));
			int age = curr.get(Calendar.YEAR)-born.get(Calendar.YEAR);
			if (age<=0){
                return 0;
            }
			int currMonth = curr.get(Calendar.MONTH);
			int currDay = curr.get(Calendar.DAY_OF_MONTH);
			int bornMonth = born.get(Calendar.MONTH);
			int bornDay = born.get(Calendar.DAY_OF_MONTH);
			if((currMonth<bornMonth) || (currMonth==bornMonth && currDay<bornDay)){
                age--;
            }
			return age < 0 ? 0:age;
		} catch (ParseException e) {
			log.info("计算周岁失败",e);
			return -2;
		}
	}

7、两个时间之间相差距离多少天

    /**
     * 两个时间之间相差距离多少天
     * @param str1 时间参数 1:
     * @param str2 时间参数 2:
     * @return 相差天数
     */
    public static long getDistanceDays(String str1, String str2) {
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Date one;
        Date two;
        long days=0;
        try {
            one = df.parse(str1);
            two = df.parse(str2);
            long time1 = one.getTime();
            long time2 = two.getTime();
            long diff ;
            if(time1<time2) {
                diff = time2 - time1;
            } else {
                diff = time1 - time2;
            }
            days = diff / (1000 * 60 * 60 * 24);
        } catch (ParseException e) {
            log.info("", e);
        }
        return days;
    }

8、校验未来日期

    //校验未来日期
	public static boolean checkFutureDate(String strDate){
		//判断是否为未来日期
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");//可以方便地修改日期格式
		String nowdate = dateFormat.format(new Date()); 
//		String strdate = strDate.replace("/","-");
		if(nowdate.compareTo(strDate)>0){
			return false;//不是未来日期
		}
		return true;//未来日期(含当前日期)
	}

9、比较日期

    //比较日期 前>后:false
	public static boolean checkDate(String strDate,String strDate1){
		if(strDate.compareTo(strDate1)>0){
			return false;
		}
		return true;
	}
	//比较日期 前>=后:false
	public static boolean checkDate1(String strDate,String strDate1){
		if(strDate.compareTo(strDate1)>=0){
			return false;
		}
		return true;
	}

10、获取指定时间

	//获取指定时间
	public static String getAppointDate(Date date,int value,int DateParm) {
		Calendar calendar = new GregorianCalendar();
		calendar.setTime(date); 
		switch (DateParm) {
		case 1:
			calendar.add(calendar.YEAR, value);//把日期往后增加一年.整数往后推,负数往前移动
			break;
		case 2:
            calendar.add(calendar.MONTH, value);// 把日期往后增加一月.整数往后推,负数往前移动
			break;
		case 3:
			calendar.add(calendar.DAY_OF_MONTH,value);//把日期往后增加一天.整数往后推,负数往前移动 
			break;
		}
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		String newStr = df.format(calendar.getTime());
		return newStr;
	}

11、判断是否为闰年

    /**
     * 判断是否为闰年
     * @param year
     * @return
     * 日常生活中,我们使用公历来跟踪时间和日期。
     * 公历是以365天为基准的日历系统,但是由于地球绕太阳运行的轨道不是完全精确的,我们需要引入闰年的概念来修正这个误差。
     * 闰年是指具有特殊日期的年份,它有一个额外的一天(2月29日),使得该年的长度为366天。
     *
     * 那么,什么样的年份才被定义为闰年呢?根据国际标准,一个年份被视为闰年的条件是:
     * 能够被4整除,并且不能被100整除的年份是闰年。
     * 能够被400整除的年份同样也是闰年。
     * 闰年的引入确保了我们的日历与地球运行轨道的对齐,使得时间的计算更加准确。
     */
    public static boolean isLeapYear(int year) {

        if (year % 4 == 0) {
            if (year % 100 == 0) {
                if (year % 400 == 0) {
                    return true;  // 能够被400整除,是闰年
                } else {
                    return false;  // 能够被100整除但不能被400整除,不是闰年
                }
            } else {
                return true;  // 能够被4整除但不能被100整除,是闰年
            }
        } else {
            return false;  // 不能够被4整除,不是闰年
        }
    }

12、获取指定时间的年、月、日

@Data
@Builder
public class DateYMD {

    private int year;

    private int month;

    private int day;

}


/**
 * 获取年、月、日
 */
public static DateYMD getDateYMD(String strDate){
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
     Date date = null;
     try {
         date = sdf.parse(strDate);
     } catch (ParseException e) {
         e.printStackTrace();
     }
     Calendar calendar = Calendar.getInstance();
     calendar.setTime(date);
     int year =  calendar.get(Calendar.YEAR) ;
     int month =  calendar.get(Calendar.MONTH) +1 ;
     int day =  calendar.get(Calendar.DATE);

     return DateYMD.builder().year(year).month(month).day(day).build();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值