1.依赖引入:
2.方法解析:
parse可以识别到一些时间的常用格式:
/*yyyy-MM-dd HH:mm:ss
yyyy-MM-dd
HH:mm:ss
yyyy-MM-dd HH:mm
yyyy-MM-dd HH:mm:ss SSS*/
1>字符串与日期(Date)的相互转换:
DateUtil.parse(str);
DateUtil.format(date,DatePattern.NORM_DATETIME_PATTERN);
DateUtil.formatDate(date); 结果格式:yyyy-MM-dd
DateUtil.formatDateTime(date); 结果格式:yyyy-MM-dd HH:mm:ss SSS
DateUtil.formatTime(date); 结果格式:HH:mm:ss
2>字符串与日期(LocalDateTime)的相互转换:
DateUtil.parseLocalDateTime(str,DatePattern.NORM_DATETIME_PATTERN);
DateUtil.formatLocalDateTime(localDateTime);
3>获取当前时间(Date)
Date date = DateUtil.date();
Date date = DateUtil.date(Calendar.getInstance());
Date date = DateUtil.date(System.currentTimeMillis());
4>获取当前时间(String)
#当前时间字符串,yyyy-MM-dd HH:mm:ss
String now = DateUtil.now();
#当前日期字符串,yyyy-MM-dd
String today = DateUtil.today();
5>获取Date对象的某个部分
DateUtil.year(date); 获取日期年份
DateUtil.month(date); 获取日期月份
DateUtil.monthEnum(date); 获取日期月份枚举
6>获取一天的开始时间和结束时间(同理获取年、季度、月、周、日、时、分、秒、毫秒的开始时间和结束时间)
DateUtil.beginOfDay(date); yyyy-MM-dd 00:00:00
DateUtil.endOfDay(date); yyyy-MM-dd 23:59:59
7>获取一个月的开始时间和结束时间
DateUtil.beginOfMonth(date);
DateUtil.endOfMonth(date);
8>日期时间偏移 (负数为向前偏移)
DateUtil.offset(date,DateField.DAY_OF_MONTH,2);
结果:日期向后推两天。 2019-09-17 17:35:35 =>2019-09-19 17:35:35
DateUtil.offsetDay(date,2);
结果:日期向后推两天。 2019-09-17 17:35:35 =>2019-09-19 17:35:35
DateUtil.offsetHour(date,2);
结果:日期向后推两小时。 2019-09-17 17:35:35 =>2019-09-19 19:35:35
DateUtil.yesterday();
结果:昨天
DateUtil.tomorrow();
结果:明天
DateUtil.lastWeek();
结果:上周
DateUtil.nextWeek();
结果:下周
DateUtil.lastMonth();
结果:上个月
DateUtil.nextMonth();
结果:下个月
9>日期时间差
a>计算两个日期相差天数,交换位置,输出结果不变。
long betweenDay = DateUtil,between(date1,date2,DateUnit.DAY);
long betweenDay = DateUtil,between(date1,date2,DateUnit.DAY,boolean);
long betweenDay =DateUtil.betweenDay(date1,date2,boolean);
2016-02-01 23:59:59 2016-02-02 00:00:00
当boolean为false,计算结果相差0天。
当boolean为true,计算结果相差1天。
b>计算两个日期相差的毫秒数
long betweenMs = DateUtil.betweenMs(date1,date2);
c>计算指定时间区间内的周数
long betweenWeek = DateUtil.betweenWeek(date1,date2,boolean);
d>计算两个日期相差月数,在非重置情况下,如果起始日期的天大于结束日期的天,月数少算1(不足1月)
DateUtil.betweenMonth(date1,date2,boolean);
e>计算两个日期相差年数,在非重置情况下,如果起始日期的月大于结束日期的月,年数要少算1(不足1年)
DateUtil.betweenYear(date1,date2,boolean);
f>格式化日期间隔输出
level 级别,按照天、小时、分、秒、毫秒分为5个等级
DateUtil.formatBetween(date1,date2,BetweenFormatter.Level);
g>格式化日期间隔输出,精确到毫秒
DateUtil.formatBetween(date1,date2);
h>格式化日期间隔输出
DateUtil.formatBetween(long,date1,BetweenFormatter.Level);
i>当前日期是否在日期指定范围内(起始日期和结束日期可以互换)
DateUtil.isIn(date1,date2,date);
j>是否为相同时间,原理,比较的是两个日期的时间戳是否相同
DateUtil.isSameTime(date1,date2);
k>比较两个日期是否为同一天
DateUtil.isSameDay(date1,date2);
l>比较两个日期是否为同一月
DateUtil.isSameMonth(date1,date2);
10>其他
通过日期计算年龄: int ageOfNow = DateUtil.ageOfNow(date);
判断是否是闰年:DateUtil.isLeapYear(year);
获得指定年份的总天数:DateUtil.lengthOfYear(int);
获取指定月份的总天数:DateUtil.lengthOfMonth(int,boolean);
时间格式字符串转为秒数:DateUtil.timeToSecond(String);
秒数转为时间格式:DateUtil.secondToTime(int);