Heim  >  Artikel  >  Java  >  Umgang mit Datum und Uhrzeit der Zeitzone in Java8

Umgang mit Datum und Uhrzeit der Zeitzone in Java8

WBOY
WBOYnach vorne
2023-05-09 16:49:081465Durchsuche

Ich habe auch festgestellt, dass diese drei Klassen keine Informationen zur Zeitzone haben, aber man kann nicht sagen, dass sie keine Zeitzonen verarbeiten, sondern dass sie die Verarbeitung von Zeitzonen selektiv verbergen. Intern verwenden sie die aktuelle Zeitzone des Betriebssystems.

Gleichzeitig stellt Java auch mehrere Klassen im Paket java.time bereit, um Datums- und Uhrzeit-APIs zu verarbeiten, die Berücksichtigung von Zeitzonen erfordern. Dies sind java.time.ZonedDateTime und java.time.ZoneId. Ersteres wird für die Verarbeitung von Datums- und Uhrzeitangaben verwendet, die eine Zeitzone erfordern, und letzteres für die Verarbeitung von Zeitzonen. 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.S 这个返回值好诡异,为啥 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()

ZonedDateTime ähnelt LocalDateTime und hat fast die gleiche API. In gewisser Weise verwendet ZonedLocalTime standardmäßig die Zeitzone des Betriebssystems, wenn keine Zeitzoneninformationen übergeben werden. Das Ergebnis ähnelt daher LocalDateTime.

Zum Beispiel können wir die Methode now() von ZonedDateTime verwenden, um Datum und Uhrzeit der aktuellen Zeitzone (Betriebssystemzeit) zurückzugeben Zone) und rufen Sie die parse ()-Methode auf, um ein Datum und eine Uhrzeit im String-Format mit Zeitzoneninformationen in eine ZonedDateTime-Instanz umzuwandeln.

Java8Tester.java

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());
   }
}

Die laufenden Ergebnisse sind wie folgt

#🎜🎜#Das aktuelle Datum und die aktuelle Uhrzeit sind: 2018-10-08T22: 21:56.806597+08 :00[Asien/Shanghai] Datum und Uhrzeit sind: 2012-10-10T21:58+08:00#🎜🎜##🎜🎜##🎜🎜#Wir können auch ZonedDateTime aufrufen Objekt Die Methoden >toLocalDate() und toLocalTime() erhalten das lokale Datum und die lokale Uhrzeit, konvertiert in die Instanz#🎜🎜#rrreee#🎜🎜#Die laufenden Ergebnisse sind wie folgt#🎜🎜##🎜 🎜##🎜🎜#Das aktuelle Datum und die aktuelle Uhrzeit sind: 2022-10-08T22:28:10.389487+08:00[Asien/Shanghai] Das lokale Datum ist: 2022-10-08T22: 28:10.389487+08:00[Asien/Shanghai] Die Ortszeit ist: 22:28:10.389487#🎜🎜##🎜🎜##🎜🎜#P.S Dieser Rückgabewert ist so seltsam. Warum funktioniert toLocalDate()? die Zeit zurückgeben? #🎜🎜#

Verarbeitung der Zeitzone

#🎜🎜#Wir können die Klasse ZoneId verwenden, um Informationen zur Zeitzone zu verarbeiten. #🎜🎜##🎜🎜#Sie können beispielsweise die statische Methode systemDefault() der Klasse ZoneId aufrufen, um die aktuelle Zeitzone zurückzugeben. #🎜🎜#rrreee#🎜🎜#Die laufenden Ergebnisse sind wie folgt#🎜🎜##🎜🎜##🎜🎜#Die aktuelle Zeitzone ist: Asien/Shanghai#🎜🎜##🎜🎜##🎜🎜#Wir können Rufen Sie auch auf. Die <code>getZone()-Methode der ZonedDateTime-Instanz ruft die Zeitzone ab, in der sich die Instanz befindet #🎜🎜#rrreee#🎜🎜#Das laufende Ergebnis ist wie folgt# 🎜🎜##🎜🎜##🎜🎜#Die aktuelle Zeitzone ist: Asien/Shanghai#🎜🎜##🎜🎜#

Das obige ist der detaillierte Inhalt vonUmgang mit Datum und Uhrzeit der Zeitzone in Java8. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen