기술나눔

시간 처리의 미래: 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