Partage de technologie

L’avenir du traitement du temps : une analyse complète de la nouvelle API de date et d’heure de Java 8

2024-07-11

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

Insérer la description de l'image ici

1. Améliorer l'arrière-plan

Java 8 a considérablement amélioré le traitement du temps et repensé toutes les API liées à la date et à l'heure, au calendrier et à l'heure. Et placez-les uniformément sous le package java.time et ses sous-packages.

Inconvénients de Java5

  1. Pas sûr pour les threadsjava.util.Date Elle n'est pas thread-safe et vous devez gérer vous-même les problèmes de concurrence multithread lorsque vous utilisez cette classe.
  2. Mauvaise conception :La date et le formatage de la date sont répartis sur plusieurs packages,java.util.Date La date par défaut, l'année, est du1900Début, mois à partir de 1 début, jour à partir de 0 Pour commencer, il n’y a pas d’uniformité.etDate La classe manque également de méthodes associées pour manipuler directement les dates.
  3. Difficulté à gérer les fuseaux horaires: J'ai dû écrire beaucoup de code pour gérer les problèmes de fuseau horaire en raison d'une mauvaise conception.

Plan d'amélioration pour Java8

  1. Sécurité du fil: nouvelle date et heureAPIEst-il thread-safe non seulementsetterméthode, et toute modification apportée à l’instance renverra une nouvelle instance tout en garantissant que l’instance d’origine reste inchangée.
  2. Date modifiée: La nouvelle API de date et d'heure fournit un grand nombre de méthodes pour modifier diverses parties de la date et de l'heure et renvoyer une nouvelle instance.
  3. zone: En termes de fuseaux horaires, la nouvelle API de date et d'heure introduit la notion de domaines.
  4. Répartition du portefeuille: L'API complexe d'origine a été réorganisée et divisée en plusieurs catégories.

2. Date et heure locales

  1. Date locale: Utilisé pour représenter une date sans fuseau horaire, par exemple : 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