首頁 > Java > java教程 > 如何處理Java8中的時區日期和時間

如何處理Java8中的時區日期和時間

WBOY
發布: 2023-05-09 16:49:08
轉載
1488 人瀏覽過

我同時也發現,這三個類別沒有任何時區相關的訊息,但也不能說它們沒有處理時區,而只能說它們有選擇的隱藏了時區的處理。它們內部會使用作業系統目前的時區。

以此同時,Java 在 java.time 套件中也提供了幾個類別用於處理需要關注時區的日期時間 API。它們是 java.time.ZonedDateTimejava.time.ZoneId。前者用於處理需要時區的日期時間,後者用於處理時區。

ZonedDateTimeLocalDateTime 類似,幾乎有相同的 API。從某些方面說,ZonedLocalTime 如果不傳遞時區訊息,那麼它會預設使用作業系統的時區,這樣,結果其實和 LocalDateTime 是類似的。

例如,我們可以使用ZonedDateTimenow() 方法傳回目前時區( 作業系統時區) 的日期時間,呼叫parse() 方法可以將一個包含了時區資訊的字串格式的日期時間轉換為一個ZonedDateTime 實例。

Java8Tester.java

import java.time.ZonedDateTime;

public class Java8Tester {

   public static void main(String args[]) {
      Java8Tester tester = new Java8Tester();
      tester.run();
   }

   public void run() {

      ZonedDateTime now = ZonedDateTime.now();
      System.out.println("当前日期时间是:" + now);

      ZonedDateTime datetime = ZonedDateTime.parse("2012-10-10T21:58:00+08:00");
      System.out.println("日期时间是:" + datetime);
   }
}
登入後複製

運行結果如下

#目前日期時間是:2018-10-08T22:21:56.806597 08:00[Asia/Shanghai]日期時間是:2012-10-10T21:58 08:00

我們也可以呼叫ZonedDateTime 物件的toLocalDate()toLocalTime () 方法將取得該實例的轉換為本地的日期和時間

import java.time.LocalTime;
import java.time.LocalDate;
import java.time.ZonedDateTime;

public class Java8Tester {

   public static void main(String args[]) {
      Java8Tester tester = new Java8Tester();
      tester.run();
   }

   public void run() {

      ZonedDateTime now = ZonedDateTime.now();
      System.out.println("当前日期时间是:" + now);

      LocalDate date = now.toLocalDate();
      System.out.println("本地日期是:" + now);

      LocalTime time = now.toLocalTime();
      System.out.println("本地时间是:" + time);


   }
}
登入後複製

運行結果如下

目前日期時間是:2022-10-08T22:28: 10.389487 08:00[Asia/Shanghai] 本地日期是:2022-10-08T22:28:10.389487 08:00[Asia/Shanghai] 本地時間是:22:28:10.389487##P#.回傳值好詭異,為啥

toLocalDate()
還回傳了時間?

處理時區

時區相關的訊息,我們可以使用

ZoneId

類別來處理。

例如可以呼叫 ZoneId

類別的靜態方法

systemDefault() 傳回目前的時區。

import java.time.ZonedDateTime;
import java.time.ZoneId;

public class Java8Tester {

   public static void main(String args[]) {
      Java8Tester tester = new Java8Tester();
      tester.run();
   }

   public void run() {

      ZoneId currentZone = ZoneId.systemDefault();
      System.out.println("当前时区是: " + currentZone);
   }
}
登入後複製
運行結果如下

目前時區是: Asia/Shanghai

我們也可以呼叫

ZonedDateTime
# 實例的

getZone() 方法取得實例所在的時區

import java.time.ZonedDateTime;
import java.time.ZoneId;

public class Java8Tester {

   public static void main(String args[]) {
      Java8Tester tester = new Java8Tester();
      tester.run();
   }

   public void run() {

      ZonedDateTime now = ZonedDateTime.now();
      System.out.println("当前时区是: " + now.getZone());
   }
}
登入後複製
運行結果如下

目前時區是: Asia/Shanghai

以上是如何處理Java8中的時區日期和時間的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板