반응형
아니 왜 응답 날짜값을 UTC로 주는지 모르겠다 증말. 이런건 그냥 심플하게 심플데이터 포맷으로 yyyyMMddHHmmssSSS로 찍어주면 어디 덧나나? 와 진짜. 아무튼 주는대로 받아먹어야하니 대충 정리해보았다.
날짜 형식은 다음과 같다.
2024-06-30T06:42:02.148+00:00 |
대충 찾아보니 UTC 형식의 DateTime으로, Simpledateformat을 기본으로 쓰는 내 시스템과는 근본적으로 달라서 날짜비교나 뭐 그런 기본적인 펑션이 하나도 먹지 않는다. 그래서 변환해서 DB에 넣고 꺼내기로 함.
java 1.8, SpringBoot 2.7.8 에서 실행했는데 이정도는 딱히 뭐 버전을 탈 일은 없겠지. 아무튼 잘 동작한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.ZoneId;
import java.util.Date;
import java.util.TimeZone;
/**
* UTC To SimpleDateFormat
*/
public static String utcToSimpleDateFormat(String utcTime) {
String simpleDateResult = "";
// UTC 형식을 설정함
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
Date utcDate;
try {
utcDate = sdf.parse(utcTime);
Instant utcInstant = utcDate.toInstant();
// Asia/Seoul 로 타임존 설정, 대소문자에 유의
ZoneId seoulZone = ZoneId.of("Asia/Seoul");
Instant seoulInstant = utcInstant.atZone(seoulZone).toInstant();
// 변경할 시간 양식을 설정해주자
SimpleDateFormat resultStr = new SimpleDateFormat("yyyyMMddHHmmssSSS");
resultStr.setTimeZone(TimeZone.getTimeZone(seoulZone));
simpleDateResult = resultStr.format(Date.from(seoulInstant));
} catch (Exception e) {
e.getMessage();
}
return simpleDateResult;
}
|
cs |
반응형
'어장 Develop > 어장 JAVA' 카테고리의 다른 글
[Eclipse] console 한글 깨짐 문제 (2) | 2024.10.24 |
---|---|
[java] Async Queue Key 활용법 (0) | 2024.04.25 |
[Java] PKIX path building failed 오류 및 SSL 통신 설정 (0) | 2024.04.01 |
[SpringBoot] jcraft jsch를 활용한 sftp 활용 (0) | 2024.03.12 |
[SpringBoot] 카멜케이스와 스네이크케이스와의 Mybatis (0) | 2024.03.11 |