日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 8时间操作_Java8 时间日期类操作

發布時間:2023/12/13 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 8时间操作_Java8 时间日期类操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java8 時間日期類操作

Java8的時間類有兩個重要的特性

線程安全

不可變類,返回的都是新的對象

顯然,該特性解決了原來java.util.Date類與SimpleDateFormat線程不安全的問題。同時Java8的時間類提供了諸多內置方法,方便了對時間進行相應的操作。

上圖為Java8時間類的覆蓋范圍

相關的類有

LocalDate

LocalTime

LocalDateTime

ZoneId

ZonedDateTime

Instant

Instant類

Instant類用來表示格林威治時間(UTC)開始的時間點,初始時間為1970-01-01T00:00:00Z。也就是從1970年一月一號開始計時,得到的秒值甚至是是納秒值。該時間戳可以與日期時間轉換。因此可以表示人類世界最完整的時間。該類相比原來java.util.Date類,精確到了納秒級別。

獲取當前的秒值和納秒值

Instant instant = Instant.now();

System.out.println(instant);

System.out.println(instant.getEpochSecond());

System.out.println(instant.getNano());

結果如下

2019-08-28T07:59:54.979Z

1566979194

979000000

將指定秒值轉為Instant。Instant.ofEpochSecond()方法。

Instant instant1 = Instant.ofEpochSecond(1566981233L);

System.out.println(instant1);

LocalDate、LocalTime、LocalDateTime、ZonedDateTime

Java8使用LocalDate、LocalTime、LocalDateTime、ZonedDateTime分別操作日期、時間、日期和時間。

這四個類的默認使用系統時區

獲取當天日期及時間

LocalDate today = LocalDate.now();

System.out.println(today);

LocalDateTime localDateTime = LocalDateTime.now();

System.out.println(localDateTime);

LocalTime localTime = LocalTime.now();

System.out.println(localTime);

ZonedDateTime zonedDateTime = ZonedDateTime.now();

System.out.println(zonedDateTime);

ZoneId zoneId = ZoneId.systemDefault();

System.out.println(zoneId);

結果如下

2019-08-28

2019-08-28T17:42:01.964

17:42:01.965

2019-08-28T17:42:01.965+08:00[Asia/Shanghai]

Asia/Shanghai

指定日期2019-09-30并通過isBefore()判斷是否今天在指定日期之前

LocalDate future = LocalDate.of(2019, 9, 30);

boolean before = today.isBefore(future);

System.out.println(before);

LocalDateTime轉String 通過DateTimeFormatter指定轉換格式

String formatStr = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss"));

System.out.println(formatStr);

String轉為LocalDate

String str = "2019-01-02";

LocalDate localDate2 = LocalDate.parse(str, DateTimeFormatter.ofPattern("yyyy-MM-dd"));

System.out.println(localDate2);

LocalDateTime與Instant的互相轉換

獲取當天的秒值和毫秒值。LocalDateTime轉Instant獲取時間戳。由于LocalDateTime并沒有包含時區,轉為Instant需要指明所在時區。北京時間也就是東八區ZoneOffset.of("+8")

long milliSecond = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();

System.out.println(milliSecond);

long second = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"));

System.out.println(second);

Instant時間戳轉LocalDateTime。使用LocalDateTime.ofInstant方法,需要指定轉換為哪個時區的時間

LocalDateTime localDateTime2 = LocalDateTime.ofInstant(Instant.now(), ZoneId.systemDefault()); //使用系統默認時間

System.out.println(localDateTime2);

結果如下

2019-08-28T16:33:53.639

參考文章

總結

以上是生活随笔為你收集整理的java 8时间操作_Java8 时间日期类操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。