Rumah >Java >javaTutorial >Bagaimana untuk mengendalikan tarikh dan masa zon masa dalam Java8

Bagaimana untuk mengendalikan tarikh dan masa zon masa dalam Java8

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBke hadapan
2023-05-09 16:49:081559semak imbas

Saya juga mendapati bahawa ketiga-tiga kelas ini tidak mempunyai sebarang maklumat berkaitan zon waktu, tetapi tidak boleh dikatakan bahawa mereka tidak mengendalikan zon waktu, tetapi mereka secara selektif menyembunyikan pemprosesan zon waktu. Secara dalaman mereka menggunakan zon waktu semasa sistem pengendalian.

Pada masa yang sama, Java juga menyediakan beberapa kelas dalam pakej java.time untuk mengendalikan API tarikh dan masa yang memerlukan perhatian pada zon waktu. Mereka ialah java.time.ZonedDateTime dan java.time.ZoneId. Yang pertama digunakan untuk mengendalikan waktu tarikh yang memerlukan zon waktu, dan yang terakhir digunakan untuk mengendalikan zon waktu.

ZonedDateTime serupa dengan LocalDateTime dan mempunyai API yang hampir sama. Dalam beberapa cara, ZonedLocalTime akan lalai ke zon waktu sistem pengendalian jika tiada maklumat zon waktu dihantar, jadi hasilnya serupa dengan LocalDateTime.

Sebagai contoh, kita boleh menggunakan kaedah ZonedDateTime now() untuk mengembalikan tarikh dan masa dalam zon waktu semasa (zon waktu sistem pengendalian, kaedah parse() boleh mengembalikan tarikh dan masa dalam format rentetan yang mengandungi maklumat zon waktu Tukar kepada contoh 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);
   }
}

Keputusan berjalan adalah seperti berikut

Tarikh dan masa semasa ialah: 2018-10-08T22:21:56.806597+08: 00[Asia/Shanghai ] Tarikh dan masa ialah: 2012-10-10T21:58+08:00

Kami juga boleh memanggil kaedah ZonedDateTime dan toLocalDate() bagi toLocalTime() objek untuk menukar contoh yang diperoleh kepada setempat Tarikh dan masa

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


   }
}

adalah seperti berikut

Tarikh dan masa semasa ialah: 2022-10-08T22:28:10.389487+08 :00[Asia/Shanghai] Tarikh tempatan ialah: 2022-10-08T22:28:10.389487+08:00[Asia/Shanghai] Waktu tempatan ialah: 22:28:10.389487

P.S. Nilai pulangan ini sangat pelik, mengapa toLocalDate() dikembalikan?

Memproses zon waktu

Maklumat berkaitan zon waktu, kita boleh menggunakan kelas ZoneId untuk mengendalikannya.

Sebagai contoh, anda boleh memanggil kaedah statik ZoneId kelas systemDefault() untuk mengembalikan zon waktu semasa.

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

Keputusan larian adalah seperti berikut

Zon waktu semasa ialah: Asia/Shanghai

Kita juga boleh memanggil kaedah ZonedDateTime untuk contoh getZone() untuk mendapatkan contoh Zon waktu

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

Keputusan larian adalah seperti berikut

Zon waktu semasa ialah: Asia/Shanghai

Atas ialah kandungan terperinci Bagaimana untuk mengendalikan tarikh dan masa zon masa dalam Java8. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam