문제 풀이/프로그래머스 알고리즘

특정 날짜(xxxx, xx, xx)의 요일 구하기 - LocalDate

열심히 해 2024. 10. 24. 21:22

https://school.programmers.co.kr/learn/courses/30/lessons/12901

 

 

import java.time.DayOfWeek;
import java.time.LocalDate;

class Solution {
    public String solution(int a, int b) {
        int year = 2016;
        int month = a;
        int day = b;

        LocalDate date = LocalDate.of(year, month, day);
        DayOfWeek dayOfWeek = date.getDayOfWeek();

        String answer = dayOfWeek.toString();
        answer = answer.substring(0, 2);
        return answer;
    }
}

 

 

 

 


 

 

LocalDate

 

 

1. 패키지

  • LocalDate: java.time.LocalDate



2. 시간 정보 포함 여부

  • LocalDate: 순수하게 날짜 정보(년, 월, 일)만을 저장하며, 시간 정보는 포함하지 않음.

 

3. 불변성

  • LocalDate: 불변 객체로, 값을 변경할 수 없습니다. 날짜를 변경하려면 새로운 객체를 생성해야 합니다.

 

 

4. 가독성 및 편리성

  • LocalDate: 훨씬 직관적이고 명확한 API를 제공합니다. 날짜 조작 및 계산이 쉬워졌으며, 메서드 이름도 직관적입니다.
LocalDate localDate = LocalDate.now();
localDate = localDate.plusDays(1);  // 하루 더하기

 

 

 

 

5. 시간대(Timezone) 처리

  • LocalDate: 시간대가 없는 순수한 날짜만 다루며, 시간대 관련 처리가 필요할 경우 ZonedDateTime, OffsetDateTime과 같은 클래스를 사용합니다.

 

 

6. 새로운 날짜 API의 기능적 확장성

  • LocalDate: 날짜 비교, 차이 계산, 날짜 연산 등이 매우 편리하게 제공됩니다. 예를 들어, isBefore(), isAfter(), until() 같은 메서드를 통해 쉽게 날짜 간 비교 및 차이를 구할 수 있습니다.
LocalDate date1 = LocalDate.of(2024, 10, 23);
LocalDate date2 = LocalDate.of(2024, 11, 1);
boolean isAfter = date1.isAfter(date2);

 

 

 

7. 포맷팅 및 파싱

  • LocalDate: DateTimeFormatter로 포맷팅 및 파싱을 간편하고 명확하게 수행할 수 있습니다.
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDate = LocalDate.now().format(formatter);