常用工具類系列之DateUtil


Date、long、Calendar之間的相互轉換

//當前時間 Date date = DateUtil.date(); //當前時間 Date date2 = DateUtil.date(Calendar.getInstance()); //當前時間 Date date3 = DateUtil.date(System.currentTimeMillis()); //當前時間字符串,格式:yyyy-MM-dd HH:mm:ss String now = DateUtil.now(); //當前日期字符串,格式:yyyy-MM-dd String today= DateUtil.today();

字符串轉日期

DateUtil.parse方法會自動識別一些常用格式,包括:

  1. yyyy-MM-dd HH:mm:ss
  2. yyyy-MM-dd
  3. HH:mm:ss
  4. yyyy-MM-dd HH:mm
  5. yyyy-MM-dd HH:mm:ss.SSS
String dateStr = "2017-03-01"; Date date = DateUtil.parse(dateStr); 

我們也可以使用自定義日期格式轉化:

String dateStr = "2017-03-01"; Date date = DateUtil.parse(dateStr, "yyyy-MM-dd");

格式化日期輸出

String dateStr = "2017-03-01"; Date date = DateUtil.parse(dateStr); String format = DateUtil.format(date, "yyyy/MM/dd"); Assert.assertEquals("2017/03/01", format); //常用格式的格式化 String formatDate = DateUtil.formatDate(date); Assert.assertEquals("2017-03-01", formatDate); String formatDateTime = DateUtil.formatDateTime(date); Assert.assertEquals("2017-03-01 00:00:00", formatDateTime); String formatTime = DateUtil.formatTime(date); Assert.assertEquals("00:00:00", formatTime);

獲取Date對象的某個部分

Date date = DateUtil.date(); //獲得年的部分 DateUtil.year(date); //獲得月份,從0開始計數 DateUtil.month(date); //獲得月份枚舉 DateUtil.monthEnum(date); //.....

開始和結束時間

有的時候我們需要獲得每天的開始時間、結束時間,每月的開始和結束時間等等,DateUtil也提供了相關方法:

String dateStr = "2017-03-01 22:33:23"; Date date = DateUtil.parse(dateStr); //一天的開始 Date beginOfDay = DateUtil.beginOfDay(date); Assert.assertEquals("2017-03-01 00:00:00", beginOfDay.toString()); //一天的結束 Date endOfDay = DateUtil.endOfDay(date); Assert.assertEquals("2017-03-01 23:59:59", endOfDay.toString());

日期時間偏移

日期或時間的偏移指針對某個日期增加或減少分、小時、天等等,達到日期變更的目的。Hutool也針對其做了大量封裝

String dateStr = "2017-03-01 22:33:23"; Date date = DateUtil.parse(dateStr); Date newDate = DateUtil.offset(date, DateField.DAY_OF_MONTH, 2); Assert.assertEquals("2017-03-03 22:33:23", newDate.toString()); //常用偏移 DateTime newDate2 = DateUtil.offsetDay(date, 3); Assert.assertEquals("2017-03-04 22:33:23", newDate2.toString()); //常用偏移 DateTime newDate3 = DateUtil.offsetHour(date, -3); Assert.assertEquals("2017-03-01 19:33:23", newDate3.toString()); 

針對當前時間,提供了簡化的偏移方法(例如昨天、上周、上個月等):

//昨天 DateUtil.yesterday() //明天 DateUtil.tomorrow() //上周 DateUtil.lastWeek() //下周 DateUtil.nextWeek() //上個月 DateUtil.lastMonth() //下個月 DateUtil.nextMonth()

日期時間差

有時候我們需要計算兩個日期之間的時間差(相差天數、相差小時數等等),Hutool將此類方法封裝為between方法:

String dateStr1 = "2017-03-01 22:33:23"; Date date1 = DateUtil.parse(dateStr1); String dateStr2 = "2017-04-01 23:33:23"; Date date2 = DateUtil.parse(dateStr2); long betweenDay = DateUtil.between(date1, date2, DateUnit.DAY); Assert.assertEquals(31, betweenDay);//相差一個月,31天

格式化時間差

有時候我們希望看到易讀的時間差,比如XX天XX小時XX分XX秒,此時使用DateUtil.formatBetween方法:

//Level.MINUTE表示精確到分 String formatBetween = DateUtil.formatBetween(between, Level.MINUTE); //輸出:31天1小時 Console.log(formatBetween);

計時器

計時器用於計算某段代碼或過程花費的時間

TimeInterval timer = DateUtil.timer();

//--------------------------------- //-------這是執行過程 //--------------------------------- timer.interval();//花費毫秒數 timer.intervalRestart();//返回花費時間,並重置開始時間 timer.intervalMinute();//花費分鍾數

其它

//年齡 DateUtil.ageOfNow("1990-01-30"); //是否閏年 DateUtil.isLeapYear(2017);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM