本文主要講述:字元串工具類Apache之
org.apache.commons.lang3.DateUtils
DateUtils是Apache提供的時間工具類,本文主要展示7個用法示例。
防止代碼備援,便于閱讀,将列印相關方法忽略。
一、字元串轉日期
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
四、設定指定時間
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
六、判斷兩日期是否同天
//判斷兩日期是否同天
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