天天看點

100個Java工具類之30:時間工具類Apache之DateUtils

作者:一名小小程式員

本文主要講述:字元串工具類Apache之

org.apache.commons.lang3.DateUtils

DateUtils是Apache提供的時間工具類,本文主要展示7個用法示例。

防止代碼備援,便于閱讀,将列印相關方法忽略。

100個Java工具類之30:時間工具類Apache之DateUtils

一、字元串轉日期

parseDate()和parseDateStrictly()差別是:

parseDateStrictly()會嚴格校驗時間格式,如示例中7月是沒有32日的,是以會轉換錯誤,而parseDate()可以正常轉換,并不會報錯。

Date date = DateUtils.parseDate("20230732010101", "yyyyMMddHHmmss");
輸出:20230801010101
Date date = DateUtils.parseDateStrictly("20230732010101", "yyyyMMddHHmmss");
輸出:java.text.ParseException: Unable to parse the date: 20230732010101           

二、日期轉字元串

DateFormatUtils.format(new Date(), "yyyyMMddHHmmss")
輸出:20230728155345           

三、指定時間加減指定數量個周期

Date date = DateUtils.addDays(new Date(), 1);
DateFormatUtils.format(date, "yyyyMMddHHmmss");
輸出:20230729155137
Date date = DateUtils.addYears(new Date(), 1);
輸出:20240728155217           
100個Java工具類之30:時間工具類Apache之DateUtils

四、設定指定時間

Date date = DateUtils.setDays(new Date(), 10);
DateFormatUtils.format(date, "yyyyMMddHHmmss");
輸出:20230710155834
Date date = DateUtils.setMinutes(new Date(), 10);
DateFormatUtils.format(date, "yyyyMMddHHmmss");
輸出:20230728151009           

五、根據指定時間擷取一個時間範圍

第一個參數是目标日期

第二個參數是控制時間範圍的,即:是周範圍還是月範圍,是将目标日期作為起始日期,還是中心日期

//以目前時間為起始日期,以一周後日期為終止日期
Iterator<Calendar> it = DateUtils.iterator(new Date(), DateUtils.RANGE_WEEK_RELATIVE);
while(it.hasNext()) {
   Calendar c = it.next();
   System.out.println(DateFormatUtils.format(c.getTime(), "yyyyMMddHHmmss"));
}
輸出:
20230728000000
20230729000000
20230730000000
20230731000000
20230801000000
20230802000000
20230803000000           
100個Java工具類之30:時間工具類Apache之DateUtils

六、判斷兩日期是否同天

//判斷兩日期是否同天
boolean same = DateUtils.isSameDay(new Date(), new Date());
輸出:true
//判斷兩日期是否同毫秒
boolean same = DateUtils.isSameInstant(new Date(), new Date());
輸出:true           

七、擷取日期上限

如果日期時間為2023年7月28日13:45:01:231,上限周期設定為HOUR,擷取目标時間是:2023年7月28日14:00:00.000;如果上限周期是MONTH,擷取目标時間是:2023年8月1日0:00:00.000。

Date date = DateUtils.ceiling(new Date(), Calendar.YEAR);
DateFormatUtils.format(date, "yyyyMMddHHmmss");
輸出:20240101000000           
100個Java工具類之30:時間工具類Apache之DateUtils