昨天學(xué)了java8新的時(shí)間日期api,以前我們做時(shí)間計(jì)算大多涉及Date,Calendar類,現(xiàn)在幾乎全部有了替代的API,使用更加簡(jiǎn)單易用,通過幾個(gè)例子記錄一下。
1.取得瞬間點(diǎn)
System.currentTimeMillis()以前我們?yōu)榱藴y(cè)試程序性能,會(huì)用下面的語句拿到當(dāng)前時(shí)間的瞬間點(diǎn),然后前后做減法,得出毫秒值,現(xiàn)在有了專門的Instant類替代。
// 代替System.currentTimeMillis()//Instant主要是表示一個(gè)瞬時(shí)點(diǎn)在時(shí)間線上Instant start = Instant.now();for (int i = 0; i < 100000000; i++) {}Instant end = Instant.now();Duration between = Duration.between(start, end);long l = between.toMillis();System.out.Duration類可以表示兩個(gè)時(shí)間點(diǎn)之間的時(shí)間量。這里用toMillis可以轉(zhuǎn)換成毫秒,你也可以用轉(zhuǎn)換成小時(shí),分,秒等。2.本地時(shí)間 以前日期計(jì)算 用Calendar類,現(xiàn)在有LocalDate,LocalDateTime,LocalTime。LocalDate有日期沒時(shí)間,LocalDateTime有日期時(shí)間,LocalTime沒日期有時(shí)間,它們都是不帶時(shí)區(qū)概念的。
plusDays()和minusDays()可以隨意加減日期
//代替 CalendarLocalDate now = LocalDate.now();System.out.println("今天的日期" + now.toString());LocalDate after5days = now.plusDays(5);System.out.println("五天后的日期" + after5days.toString());新的api計(jì)算今天是星期幾更加符合人類的思維,星期一返回就是1,星期天返回7
//計(jì)算今天是星期幾int value = now.getDayOfWeek().getValue();switch (value) { case 1: System.out.println("今天星期一"); break; case 2: System.out.println("今天星期二"); break; case 3: System.out.println("今天星期三"); break; case 4: System.out.println("今天星期四"); break; case 5: System.out.println("今天星期五"); break; case 6: System.out.println("今天星期六"); break; case 7: System.out.println("今天星期日"); break; default: System.out.println("出錯(cuò)了");}計(jì)算下一個(gè)星期五等簡(jiǎn)單的邏輯操作也有專門的api可以直接調(diào)用,主要依賴TemporalAdjusters提供的一些靜態(tài)方法。
//計(jì)算下個(gè)星期五(從今天開始算,如果今天是星期五,就會(huì)返回今天的日期)//LocalDate不帶時(shí)區(qū)概念LocalDate nextFriday = now.with(TemporalAdjusters.nextOrSame(DayOfWeek.FRIDAY));System.out.println("下一個(gè)星期五是:" + nextFriday);//計(jì)算這個(gè)月的第一天LocalDate firstDayOfMonth = now.with(TemporalAdjusters.firstDayOfMonth());System.out.println("這個(gè)月的第一天是:" + firstDayOfMonth);3.格式化日期和解析日期
格式化主要依靠DateTimeFormatter類,你可以給它自定義格式,它幫你格式化字符串,或從字符串解析成日期, 用的時(shí)候注意LocalDate,LocalDateTime,LocalTime三個(gè)類有些不帶日期和時(shí)間,不然解析或格式化的時(shí)候會(huì)報(bào)錯(cuò)。
格式化的規(guī)范:
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注