Java

[Java] String to LocalDate

_yoonie 2023. 8. 13. 01:39

String으로 받아오는 날짜와 현재 날짜를 비교하려고 합니다.

LocalDate객체를 사용하면 비교함수를 제공하기 때문에, String을 LocalDate로 변환합니다.

▶ LocalDate 비교함수 보러가기


LocalDate를 사용하여 현재 날짜 받아오기

LocalDate today  = LocalDate.now();          // 2023-08-11

 

String을 LocalDate로 변환

String을 바로 parsing하게 되면 '20230811' could not be parsed at index 0 오류가 납니다.

String date = "20230815";
LocalDate.parse(date);        //'20230815' could not be parsed at index 0

LocalDate.parse에 두번째 파라미터로 DateTimeFormatter 라이브러리로 format을 지정합니다.

DateTimeFormatter 상수

  • BASIC_ISO_DATE : '20230815'
  • ISO_DATE : '2023-08-15' or  '2011-12-03+01:00'
  • ISO_DATE_TIME : '2023-08-15T10:15:30'
  • ISO_INSTANT : '2023-08-15T10:15:30Z'
  • ISO_LOCAL_DATE : '2023-08-15' 
  • ISO_LOCAL_DATE_TIME : '2023-08-15T10:15:30'
  • ISO_LOCAL_TIME : '10:15' or '10:15:30'
  • ISO_OFFSET_DATE : '2023-08-15+01:00'
  • ISO_OFFSET_DATE_TIME : '2023-08-15T10:15:30+01:00'
  • ISO_OFFSET_TIME : '10:15+01:00' or '10:15:30+01:00'.
  • ISO_ORDINAL_DATE : '2023-337' //연도-해당연도에서 몇번째 날
  • ISO_TIME : '10:15', '10:15:30' or '10:15:30+01:00'
  • ISO_WEEK_DATE : '2023-W48-6'. //연도-해당연도에서 몇번째 주-요일(1:월, 7:일)
  • ISO_ZONED_DATE_TIME : '2023-08-15T10:15:30+01:00[Europe/Paris]'. 
  • ISO_ZONED_DATE_TIME : 'Tue, 15 Aug 2023 11:05:30 GMT'.
String date = "20230815";
LocalDate.parse(date, DateTimeFormatter.ISO_DATE_BASIC); //20230815

 

String을 LocalDate로 변환 후 현재 날짜와 비교 - 전체코드

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
LocalDate today  = LocalDate.now();          // 2023-08-11
String todayStr	 = today.format(formatter);  //"20230811"

String date = "20230815";
LocalDate.parse(date,DateTimeFormatter.BASIC_ISO_DATE).isBefore(today) //false

 

▶ 다른 타입 변환 보러가기

 

[JAVA] 변수형 타입 변환하기

# String을 숫자로 변환하기 1. String에서 int Integer.parseInt(String) String str = "300"; int a = 0; a = Integer.parseInt(str); //300 2. String에서 float Float.parseFloat(String) String str = "300.32"; float a = 0; a = Float.parseFloat(str); //

jiyoon-dev.tistory.com

 

728x90