这个包是我感觉比较实用的一个,提供了很多方便操作日期和时间的算法。
格式化日期,不用自己再去写SimpleDateFormat了
// 2019-06-01 19:02:45
System.out.println(DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
一组对时间进行加减的方法,如果是负数是相应的减少
Date date = new Date();
// Sat Jun 01 21:04:06 CST 2019
System.out.println(date);
// Fri May 31 21:04:06 CST 2019
System.out.println(DateUtils.addDays(date, -1));
// Sat Jun 01 22:04:06 CST 2019
System.out.println(DateUtils.addHours(date, 1));
// Sat Jun 01 21:04:07 CST 2019
System.out.println(DateUtils.addMilliseconds(date,1000));
// Sat Jun 01 21:05:06 CST 2019
System.out.println(DateUtils.addMinutes(date, 1));
// Mon Jul 01 21:04:06 CST 2019
System.out.println(DateUtils.addMonths(date, 1));
// Sat Jun 01 21:04:07 CST 2019
System.out.println(DateUtils.addSeconds(date, 1));
// Sat Jun 08 21:04:06 CST 2019
System.out.println(DateUtils.addWeeks(date, 1));
// Mon Jun 01 21:04:06 CST 2020
System.out.println(DateUtils.addYears(date, 1));
在某个field上进行向上取整
Date date = new Date();
// 2019-06-01 21:23:29
print(date);
// 2020-01-01 00:00:00
print(DateUtils.ceiling(date, Calendar.YEAR));
// 2019-07-01 00:00:00
print(DateUtils.ceiling(date, Calendar.MONTH));
// 2019-06-02 00:00:00
print(DateUtils.ceiling(date, Calendar.DAY_OF_MONTH));
// 2019-06-01 22:00:00
print(DateUtils.ceiling(date, Calendar.HOUR_OF_DAY));
// 2019-06-01 21:24:00
print(DateUtils.ceiling(date, Calendar.MINUTE));
// 2019-06-01 21:23:30
print(DateUtils.ceiling(date, Calendar.SECOND));
注意:Valid fragments are: Calendar.YEAR, Calendar.MONTH, both Calendar.DAY_OF_YEAR and Calendar.DATE, Calendar.HOUR_OF_DAY, Calendar.MINUTE, Calendar.SECOND and Calendar.MILLISECOND A fragment less than or equal to a HOUR field will return 0.
Date date = new Date();
// 2019-06-01 21:23:29
print(date);
// 2
System.out.println(DateUtils.getFragmentInDays(date, Calendar.MONTH));
// 41
System.out.println(DateUtils.getFragmentInHours(date, Calendar.MONTH));
// 151014738
System.out.println(DateUtils.getFragmentInMilliseconds(date, Calendar.MONTH));
// 2516
System.out.println(DateUtils.getFragmentInMinutes(date, Calendar.MONTH));
// 151014
System.out.println(DateUtils.getFragmentInSeconds(date, Calendar.MONTH));
判断两个日期是不是同一天
Date date = new Date();
Date date1 = new Date();
// 2019-06-01 21:23:29
print(date);
print(date1);
// true
System.out.println(DateUtils.isSameDay(date1, date));
解析日期字符串,多个匹配模式,有一个模板匹配上就能够解析
String dateString = "2019-06-01 18:03:23";
// 2019-06-01 18:03:23
Date dateTest = DateUtils.parseDate(dateString, "yyyy-MM-dd HH:mm:ss");
截取日期分量
比较两个日期在某个域上的大小
小于,等于,大于分别返回-1,0,1
判断两个日期在某个分量上是否相等
将毫秒进行格式化, 比如100000毫秒格式化
// 0天0小时1分钟40秒
System.out.println(DurationFormatUtils.formatDuration(100000, "d天H小时m分钟s秒"));
// 0天0小时1分钟39秒
System.out.println(DurationFormatUtils.formatPeriod(1000,100000, "d天H小时m分钟s秒"));
符号 | 含义 |
---|---|
y | years |
M | months |
d | days |
H | hours |
m | minutes |
s | seconds |
S | milliseconds |
‘text’ | arbitrary text content |