java8--新的日期時間api
阿新 • • 發佈:2018-11-19
使用Java8,新的日期時間API解決了舊的日期時間API的以下問題、缺陷:
非執行緒安全: java.util.Date不是執行緒安全的,因此開發者必須在使用日期處理併發性問題。新的日期時間API是不可變的,並且沒有setter方法。
設計不佳: 預設的開始日期從1900年,開始每月從1天從0開始,所以沒有統一。不直接使用方法操作日期。新的API提供了這樣操作實用方法。
困難的時區處理: 開發人員必須編寫大量的程式碼來處理時區的問題。新的API設計開發保持特定領域設計。
示例程式碼1 : LocalDate
LocalDate date = LocalDate.now(); int year=date.getYear(); int month =date.getMonth().getValue(); int day = date.getDayOfMonth(); int week =date.getDayOfWeek().getValue(); System.out.println("年:"+year); System.out.println("月:"+month); System.out.println("日:"+day); System.out.println("星期幾:"+week); System.out.println( date.toString());
示例程式碼2: LocalDateTime
LocalDateTime dateTime =LocalDateTime.now(); int year=dateTime.getYear(); int month =dateTime.getMonth().getValue(); int day = dateTime.getDayOfMonth(); int week =dateTime.getDayOfWeek().getValue(); int hour= dateTime.getHour(); int minute= dateTime.getMinute(); int second= dateTime.getSecond(); int nano= dateTime.getNano(); System.out.println("年:"+year); System.out.println("月:"+month); System.out.println("日:"+day); System.out.println("星期幾:"+week); System.out.println("小時:"+hour); System.out.println("分鐘:"+minute); System.out.println("秒:"+second); System.out.println("納秒:"+nano); System.out.println(dateTime);
示例程式碼3: LocalTime
LocalTime time =LocalTime.now();
int hour =time.getHour();
int minute=time.getMinute();
int second=time.getSecond();
System.out.println("小時:"+hour);
System.out.println("分鐘:"+minute);
System.out.println("秒:"+second);
示例程式碼4: 日期的加、減
LocalDate currentDate = LocalDate.now(); LocalDate newDate1= currentDate.plus(1,ChronoUnit.DAYS );//加1天 LocalDate newDate2= currentDate.plusDays(1);//加1天 LocalDate newDate3= currentDate.plus(-1,ChronoUnit.DAYS );//減1天 LocalDate newDate4= currentDate.minus(1,ChronoUnit.DAYS);//減1天 LocalDate newDate5= currentDate.minusDays(1);//減1天 System.out.println(currentDate); System.out.println(newDate1); System.out.println(newDate2); System.out.println(newDate3); System.out.println(newDate4); System.out.println(newDate5);
示例程式碼5: 獲取當前時間毫秒值
@Test
public void test1() {
Instant now = Instant.now();
System.out.println(now.getEpochSecond());//獲取當前時間秒
System.out.println(now.toEpochMilli()); //獲取當前時間毫秒值
}
示例程式碼6: 獲取兩個日期之間的間隔
/**
* 獲取兩個日期之間的間隔
*/
@Test
public void test9() {
LocalDate now1 = LocalDate.now();
LocalDate now2 = LocalDate.of(2018, 11, 1);
Period period= Period.between(now1, now2);
System.out.println(period.toString());//
System.out.println(period.getDays()); //當前日期距2018年11月1日相差幾天
}
示例程式碼7: 時間的持續
@Test
public void testDuration(){
LocalTime time1 = LocalTime.now();
Duration twoHours = Duration.ofHours(2);
LocalTime time2 = time1.plus(twoHours);
Duration duration = Duration.between(time1, time2);
System.out.println("Duration: " + duration);
}