上一篇文章,小樂給你們帶來了Java8新特性之Optional,接下來本文將會給你們介紹Java8新特性之Date APIjava
Java 8經過發佈新的Date-Time API來進一步增強對日期與時間的處理。 舊版的 Java 中,日期時間 API 存在諸多問題 :sql
Java 8 在 java.time 包下提供了不少新的 API。如下爲兩個比較重要的 API:segmentfault
新的java.time包涵蓋了全部處理日期,時間,日期/時間,時區,時刻(instants),過程(during)與時鐘(clock)的操做。安全
LocalDateTime ldt = LocalDateTime.now(); // 獲取系統當前時間 System.out.println(ldt); LocalDateTime ldt2 = LocalDateTime.of(2019, 01, 01, 12, 12, 12, 888000000); // 構建LocalDateTime對象ldt System.out.println(ldt2); // 獲取明年此時的時間 LocalDateTime ldt3 = ldt.plusYears(1); System.out.println(ldt3); // 獲取去年此刻時間 LocalDateTime ldt4 = ldt.minusYears(1); System.out.println(ldt4); // 獲取年 System.out.println(ldt.getYear()); // 獲取月份 System.out.println(ldt.getMonthValue()); // 獲取本月第某天 System.out.println(ldt.getDayOfMonth()); // 獲取時 System.out.println(ldt.getHour()); // 獲取分 System.out.println(ldt.getMinute()); // 獲取秒 System.out.println(ldt.getSecond()); // 獲取納秒 System.out.println(ldt.getNano());
時間戳:以Unix元年:1970年1月1日 00:00:00 至目前時間之間的毫秒值 public static void testInstant(){ // 時間戳 Instant Instant ins1 = Instant.now(); // 默認獲取UTC時間,協調世界時 System.out.println(ins1); OffsetDateTime odt = ins1.atOffset(ZoneOffset.ofHours(8)); System.out.println(odt); System.out.println(ins1.toEpochMilli()); Instant ins2 = Instant.ofEpochSecond(60); System.out.println(ins2); }
public static void testDuration(String[] args) { Instant ins1 = Instant.now(); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } Instant ins2 = Instant.now(); Duration dura = Duration.between(ins1, ins2); System.out.println(dura.toMillis()); System.out.println("----------------------"); LocalTime lt1 = LocalTime.now(); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } LocalTime lt2 = LocalTime.now(); Duration dura2 = Duration.between(lt1, lt2); System.out.println(dura2.toMillis()); } public static void testPeriod(){ LocalDate ld1 = LocalDate.of(2015, 2, 2); LocalDate ld2 = LocalDate.now(); Period period = Period.between(ld1, ld2); System.out.println(period); System.out.println("相差" + period.getYears() + "年" + period.getMonths() + "月" + period.getDays() + "天"); }
public static void testTemporalAdjuster(){ LocalDateTime ldt = LocalDateTime.now(); System.out.println(ldt); LocalDateTime ldt2 = ldt.withDayOfMonth(10); System.out.println(ldt2); LocalDateTime ldt3 = ldt.with(TemporalAdjusters.next(DayOfWeek.SATURDAY)); System.out.println(ldt3); }
public static void testDateFormate(){ DateTimeFormatter dtf = DateTimeFormatter.ISO_DATE; LocalDateTime ldt = LocalDateTime.now(); String strDate = ldt.format(dtf); System.out.println(strDate); System.out.println("----------------------------"); DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss"); String strDate2 = dtf2.format(ldt); System.out.println(strDate2); System.out.println("-----------------------------"); LocalDateTime newDate = ldt.parse(strDate2, dtf2); System.out.println(newDate); }
// 時區的處理 public static void testTimeZone(){ LocalDateTime ldt = LocalDateTime.now(ZoneId.of("Europe/Dublin")); System.out.println(ldt); LocalDateTime ldt2 = LocalDateTime.now(ZoneId.of("Europe/Dublin")); ZonedDateTime zdt = ldt2.atZone(ZoneId.of("Europe/Dublin")); System.out.println(zdt); }
此次就分享到這裏了,後面小樂會繼續給你們介紹Java8新特性的,請你們繼續多多關注哦!樂字節只講Java技術乾貨。spa