[Kotlin] LocalDate

Subeen·2023년 12월 1일
0

Kotlin 문법

목록 보기
10/23

호텔 예약하기 프로그램을 구현하면서 기능 중에 체크인, 체크아웃 날짜를 문자열로 입력받아 날짜를 계산하고 예약하는 부분이 있다. "20231201" 과 같은 형식의 문자열을 LocalDate를 사용하여 날짜로 변환해 날짜 간 계산을 진행하였는데 오늘은 이 부분을 정리해보려 한다.

LocalDate 생성

// 직접 지정하여 생성하기
val date = LocalDate.of(2023, 12, 1)
println(date)  // 2023-12-01

// DateFormatter를 지정하여 String을 LocalDate로 만들기
// DateTimeFormatter.ISO_DATE 는 "yyyy-mm-dd"를 상수로 선언한 것이다.
// "yyyy-mm-dd" 형태의 String을 파싱할 수 있다.
val dateParse = LocalDate.parse("2023-12-01", DateTimeFormatter.ISO_DATE)
println(dateParse)  // 2023-12-01

// 현재 날짜를 LocalDate로 생성하기
val now = LocalDate.now()
println(now)  // 2023-12-01

String을 LocalDate로 생성하기

val dateParse = LocalDate.parse("2023-12-01")
println(dateParse)  // 2023-12-01

LocalDate formatting

  • DateTimeFormatter의 메소드인 ofPattern를 사용하여 포맷팅 형식을 정해줄 수 있다.
  • ofPattern의 인자로 포맷팅 형식을 넘겨주면 원하는 형식의 String으로 반환한다.
val date = "2023/12/01"
val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd")
val dateParse = LocalDate.parse(date, dateTimeFormatter)
println(dateParse)  // 2023-12-01
val format = dateParse.format(dateTimeFormatter)  // 2023/12/01
println(format)

LocalDate 속성 변경

  • LocalDate는 불변객체이므로 속성값을 변경하려면 새로운 객체를 생성해 할당하거나 기존 객체에 재할당 해야 한다.
val date = LocalDate.of(2023, 12, 1)

val newDate1 = date.withYear(2022)
println(newDate1)  // 2022-12-01

val newDate2 = date.withMonth(4)
println(newDate2)  // 2023-04-01

val newDate3 = date.withDayOfMonth(16)
println(newDate3)  // 2023-12-16

LocalDate 날짜 연산

val date = LocalDate.of(2023, 12, 1)

val plusDate1 = date.plusYears(1)
println(plusDate1)  // 2024-12-01

val plusDate2 = date.plusMonths(1)
println(plusDate2)  // 2024-01-01

val plusDate3 = date.plusDays(1)
println(plusDate3)  // 2023-12-02

val minusDate1 = date.minusYears(1)
println(minusDate1)  // 2022-12-01

val minusDate2 = date.minusMonths(1)
println(minusDate2)  // 2023-11-01

val minusDate3 = date.minusDays(1)
println(minusDate3)  // 2023-11-30

LocalDate Class를 이용하여 날짜 다루기

profile
개발 공부 기록 🌱

0개의 댓글