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

Bagaimana untuk mengendalikan tarikh dan masa zon masa dalam Java8

WBOY
Lepaskan: 2023-05-09 16:49:08
ke hadapan
1492 orang telah melayarinya

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);
   }
}
Salin selepas log masuk

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


   }
}
Salin selepas log masuk

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);
   }
}
Salin selepas log masuk

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());
   }
}
Salin selepas log masuk

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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan