Обмен технологиями

Будущее обработки времени: полный анализ нового API даты и времени в Java 8.

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. Локальная дата: используется для представления даты без часового пояса, например: 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