Berbagi teknologi

Masa depan pemrosesan waktu: Analisis lengkap API tanggal dan waktu baru Java 8

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Masukkan deskripsi gambar di sini

1. Perbaiki latar belakang

Java 8 telah meningkatkan pemrosesan waktu secara komprehensif dan mendesain ulang semua API terkait tanggal dan waktu, kalender, dan waktu. Dan letakkan secara seragam di bawah paket dan sub-paket java.time.

Kekurangan Java5

  1. Tidak aman untuk benangjava.util.Date Ini tidak aman untuk thread, dan Anda harus menangani sendiri masalah konkurensi multi-thread saat menggunakan kelas ini.
  2. Desain yang buruk :Pemformatan tanggal dan tanggal didistribusikan ke beberapa paket,java.util.Date Tanggal default, tahun berasal1900Mulai, bulan dari 1 mulai, hari dari 0 Pertama-tama, tidak ada keseragaman.DanDate Kelas ini juga tidak memiliki metode terkait untuk memanipulasi tanggal secara langsung.
  3. Kesulitan menangani zona waktu: Harus menulis banyak kode untuk menangani masalah zona waktu karena desain yang buruk.

Rencana perbaikan untuk Java8

  1. Keamanan benang: tanggal dan waktu baruAPIApakah thread-safe bukan hanya tidaksettermetode, dan perubahan apa pun pada instance akan mengembalikan instance baru sambil memastikan bahwa instance asli tetap tidak berubah.
  2. modifikasi tanggal: API tanggal dan waktu baru menyediakan sejumlah besar metode untuk mengubah berbagai bagian tanggal dan waktu dan mengembalikan instance baru.
  3. daerah: Dalam hal zona waktu, API tanggal dan waktu baru memperkenalkan konsep domain.
  4. Pemisahan portofolio: API kompleks asli direorganisasi dan dibagi menjadi beberapa kategori.

2. Tanggal dan waktu setempat

  1. Tanggal Lokal: Digunakan untuk mewakili tanggal tanpa zona waktu, contoh: 06-07-2024.

    import java.time.LocalDate;
    import java.time.Month;
    
    public class LocalDateExample {
        public static void main(String[] args) {
            // 获取当前日期
            LocalDate today = LocalDate.now();
            System.out.println("当前日期: "   today);
    
            // 创建指定日期
            LocalDate specificDate = LocalDate.of(2024, Month.JULY, 6);
            System.out.println("指定日期: "   specificDate);
    
            // 日期操作示例
            LocalDate tomorrow = today.plusDays(1);
            System.out.println("明天的日期: "   tomorrow);
        }
    }
    
    // 输出
    当前日期: 2024-07-06
    指定日期: 2024-07-06
    明天的日期: 2024-07-07