반응형
java.sql.timestamp를 LocalDate(java8) java.time으로 변환하는 방법?
Java 8에서 어떻게 변환할 수 있는가?Timestamp
(안에)java.sql
)에 ~에LocalDate
(안에)java.time
)?
다음 작업을 수행할 수 있음:
timeStamp.toLocalDateTime().toLocalDate();
참고:
timestamp.toLocalDateTime()
시간대를 사용하여 변환한다.이것은 당신이 원하는 것일 수도 있고 아닐 수도 있다.
받아들여진 답은 이상적이지 않기 때문에 나는 내 2센트를 추가하기로 결정했다.
timeStamp.toLocalDateTime().toLocalDate();
일반적으로 좋지 않은 해결책인데, 왜 JDK에 이 방법을 추가했는지조차 모르겠다. 그것은 시스템 시간대를 사용하여 암묵적인 변환을 함으로써 상황을 정말 혼란스럽게 만들기 때문이다.일반적으로 자바8 날짜 클래스만 사용할 경우 프로그래머는 좋은 시간대인 시간대를 지정하도록 강요받는다.
좋은 해결책은
timestamp.toInstant().atZone(zoneId).toLocalDate()
여기서 ZoneId는 시스템 표준 시간대를 사용하려는 경우 일반적으로 ZoneId.systemDefault() 또는 ZoneOffset과 같은 하드 코딩된 표준 시간대를 사용하는 표준 시간대다.UTC
일반적인 접근법은 다음과 같아야 한다.
- 예를 들어, 우리의 경우 Java.time과 직접 관련된 클래스를 사용하여 새로운 Java8 날짜 클래스로 자유롭게 이동하십시오.Instant는 java.sql과 직접 관련이 있다.타임스탬프, 즉 이들 사이에 시간대 변환이 필요하지 않다.
- 이 자바8 클래스에서 잘 설계된 방법을 사용하여 올바른 작업을 수행하십시오.우리의 경우 atZone(zoneId)은 변환을 하고 있으며 변환을 위해 특정 시간대를 사용하고 있음을 명시했다.
시간대를 감안해서 @assylias 대답을 약간 확대하겠다.특정 시간대에 대해 LocalDateTime을 얻는 방법은 적어도 두 가지가 있다.
전체 응용 프로그램에 setDefault 시간대를 사용할 수 있다.타임스탬프 -> Java.time 변환 전에 호출해야 한다.
public static void main(String... args) {
TimeZone utcTimeZone = TimeZone.getTimeZone("UTC");
TimeZone.setDefault(utcTimeZone);
...
timestamp.toLocalDateTime().toLocalDate();
}
또는 Instant.atZone 체인을 사용할 수 있다.
timestamp.toInstant()
.atZone(ZoneId.of("UTC"))
.toLocalDate();
반응형
'IT이야기' 카테고리의 다른 글
size_t의 최대값을 찾기 위한 휴대용 방법은 무엇인가? (0) | 2022.05.19 |
---|---|
상태가 업데이트되면 데이터가 변경되는 이유는? (0) | 2022.05.19 |
vuejs 2에서 선택 입력 옵션을 동적으로 변경 (0) | 2022.05.18 |
Vuex-module-decorator 스토어를 동적으로 등록 및 등록 취소하려면 어떻게 해야 하는가? (0) | 2022.05.18 |
NuxtJS 저장 상태 변수가 정의되지 않은 상태로 계속 반환됨 (0) | 2022.05.18 |