기억력이 점점 떨어지는 관계로

기록 차원에 남기는 소소한 팁(?).

 

Date 관련해서는 Date, Calendar, LocalDate 등의 기본 클래스와 JodaTime와 같은 써드파티 라이브러리 등

여러 가지 라이브러리가 존재하고

동일한 결과를 얻을 수 있는 라이브러리들의 사용법 또한 여러 가지라 

뭔가 필요할 때마 검색하거나 이전 소스를 뒤적거려야 하게 되는데 조금씩이라도 정리해 놓고 나중에 참고할 목적으로 올립니다.

 

  @Test
  public void dateTest() {

    // 현재월의 첫번째 일자 - use Calendar
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.DAY_OF_MONTH, 1);
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DateUtil.YYYY_MM_DD);
    String startDate = simpleDateFormat.format(calendar.getTime());
    System.out.println(startDate);  // 2021-06-01

    // 현재월의 첫번째 일자 - use LocalDate
    LocalDate firstDate = LocalDate.now().with(TemporalAdjusters.firstDayOfMonth());
    String firstDateString = firstDate.format(DateTimeFormatter.ISO_DATE);
    System.out.println(firstDateString);  // 2021-06-01

    // 현재월의 마지막 일자
    LocalDate lastdDate = LocalDate.now().with(TemporalAdjusters.lastDayOfMonth());
    String lastDateString = lastdDate.format(DateTimeFormatter.ISO_DATE);
    System.out.println(lastDateString); // 2021-06-30

    // 현재월의 첫번째 월요일인 날짜.
    LocalDate dateOfFirstMonday = LocalDate.now().with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));
    System.out.println(dateOfFirstMonday);  // 2021-06-07

  }

 

현재 월의 첫 번째 날짜, 즉 1일과 말일을 가져오기 위해서

Calendar과 LocalDate를 비교한 간단한 테스트 코드입니다.

 

코드만 보더라도,

LocalDate를 사용한 방법이 훨씬 간단하며, 코드가 직관적입니다.

TemporalAdjusters.firstDayOfMonth()  -> 해당월의 첫번째 날짜
TemporalAdjusters.lastDayOfMonth()   -> 해당월의 마지막 날짜

 

이런 직관적인 함수들 너무 맘에 드네요.

이렇게도 사용해서 '현재 월의 첫 번째 월요일인 날짜'등 다양한 조건의 날짜들을 가져올 수 있습니다.

LocalDate.now().with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY))

 

 

JodaTime 라이브러리도  다양하고, 간편하나 날짜 관련 기능들을 제공하는 훌륭한 라이브러리이긴 하지만

Java8 이후로 Date관련 클래스들의 기능이 많이 개선되어, 잘 찾아서 사용하면 굳이 써드파티의 힘을 빌리지 않아도 될 것 같습니다.

 

JodaTime - https://www.joda.org/joda-time/

 

Joda-Time - Home

Releases Release 2.10.10 is the current latest release. This release is considered stable and worthy of the 2.x tag. See the change notes for full details. Joda-Time requires Java SE 5 or later and has no dependencies. There is a compile-time dependency on

www.joda.org

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기