技術共有

時間処理の未来: Java 8 の新しい日付と時刻 API の完全な分析

2024-07-11

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

ここに画像の説明を挿入します

1.背景を改善する

Java 8 では、時刻処理が包括的に改善され、すべての日付と時刻、カレンダー、時刻関連の API が再設計されました。そして、それらを java.time パッケージとサブパッケージの下に均等に配置します。

Java5のデメリット

  1. スレッドセーフではありませんjava.util.Date これはスレッドセーフではないため、このクラスを使用する場合は、マルチスレッドの同時実行の問題を自分で処理する必要があります。
  2. デザインが悪い :日付と日付の形式は複数のパッケージに分散されます。java.util.Date デフォルトの日付、年は開始日です1900開始、月から 1 開始日、からの日 0 そもそも統一性がない。そして Date このクラスには、日付を直接操作するための関連メソッドもありません。
  3. タイムゾーンの扱いが難しい: 設計が不十分なため、タイムゾーンの問題を処理するために多くのコードを記述する必要がありました。

Java8の改善計画

  1. スレッドの安全性: 新しい日付と時刻APIスレッドセーフであるだけでなく、setterメソッドを使用し、インスタンスに変更を加えると、元のインスタンスが変更されないまま新しいインスタンスが返されます。
  2. 日付が変更されました: 新しい日付と時刻 API は、日付と時刻のさまざまな部分を変更し、新しいインスタンスを返すための多数のメソッドを提供します。
  3. エリア: タイムゾーンに関しては、新しい日付と時刻 API ではドメインの概念が導入されています。
  4. ポートフォリオの分割: 元の複雑な API が再編成され、いくつかのカテゴリに分割されました。

2. 現地の日付と時刻

  1. ローカル日付: タイムゾーンのない日付を表すために使用されます (例: 2024-07-06)。

    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