api 로 전달 받은 시간의 형식은
"start_date":"2021-12-01T17:00:00+0900",
"end_date":"2022-12-31T17:00:00+0900",
이거다.. 이건 ZonedDateTime 형식이라고 한다.
ZonedDateTime(2022-12-31T17:00:00+0900) 에서
yyyy-MM-dd로 바꾸려면 어떻게 해야할까.
1. 답변
위 url에서 답변으로는 처음 시작 형식과 원하는 형식을 각각 선언해줘야한다고 한다.
String date = "2019-07-14T18:30:00.000Z";
SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a");
Date parsedDate = inputFormat.parse(date);
String formattedDate = outputFormat.format(parsedDate);
System.out.println(formattedDate);
2. 그러나 위의 형식을 지키지 않아도 가능했다.
private SimpleDateFormat dspDateFormat = new SimpleDateFormat("yyyy-MM-dd");
getDate("2022-12-31T17:00:00+0900"); // 2022-12-31
private String getDate(String strEndDate) {
try {
Date date = dspDateFormat.parse(strEndDate);
return dspDateFormat.format(date);
} catch(Exception e) {
return strEndDate;
}
}
3. 왜 이렇게 작동하는지 궁금해서 조사
private String getDate(String zoneTime) {
try {
System.out.println("zoneTime>>"+zoneTime);
Date date = dspDateFormat.parse(zoneTime);
System.out.println("date>>> "+date);
System.out.println("date.getTime>>> "+date.getTime());
System.out.println("dspDateFormat.format(date)>> "+dspDateFormat.format(date));
return dspDateFormat.format(date);
} catch(Exception e) {
return zoneTime;
}
}
4. SimpleDateFormat 별로인가?
static 으로 선언된 녀석을 여러 Thread에서 사용하게 만드는 경우에는 문제가 생기긴 합니다 ㅋㅋ
DateTimeFormatter라는 상위호환이 있으니 굳이 쓸 이유는 없겠져 ㅋㅋ
'검색용 개발 블로그' 카테고리의 다른 글
문자열 빈칸, null, isEmpty() (0) | 2022.04.19 |
---|---|
작업 중 폴더를 git에 새롭게 올리기(새 폴더 만들지 말아요) (0) | 2022.03.29 |
제이쿼리 (0) | 2022.01.20 |
s3랑 athena 연결하기 (0) | 2022.01.11 |
athena timestamp 조회 (0) | 2022.01.11 |