programing

mongo DB에 Java 8 LocalDate 저장

i4 2023. 7. 5. 20:05
반응형

mongo DB에 Java 8 LocalDate 저장

스프링 부트 사용1.5.4.RELEASE그리고 몽고 드라이버3.4.2.

저장하고 싶습니다.LocalDatemongo DB하지만 저는 이상한 문제에 직면해 있습니다.

LocalDate startDate = LocalDate.now();
LocalDate endDate = LocalDate.of(2020,12,01);
System.out.println("---- StartDate : ---"+startDate); 
System.out.println("-----End Date : ----"+endDate);
        
        repository.save(new Person("Mehraj","Malik", startDate, endDate));

콘솔의 출력:

시작 날짜: ---2017-08-26

----종료 날짜: ----2020-12-01

그러나 MongoDb에서는 잘못된 날짜를 저장하고 있습니다.

다음은 MongoDb의 json입니다.

"시작일" : ISO 날짜("2017-08-25T 18:30:00.000Z"),

"종료 날짜":ISO 날짜("2020-11-30T 18:30:00.000Z")

또한 인도 시간에 따라 저장된 시간도 잘못되었다는 것을 알게 되었습니다.

콘솔에서는 날짜가 맞지만 MongoDB에서는 날짜가 맞지 않는 이유와 이 문제를 해결하는 방법은 무엇입니까?

날짜 개체에 대한 mongo-java 클라이언트가 다음의 인스턴스로 반환됩니다.java.util.Date.

문제는 아마도 당신이 그것을 저장하는 동안에 있을 수 있습니다.startDate그리고endDate가치, 그것toString()메소드는 JVM의 기본 표준 시간대를 사용하여 값을 업데이트할 수 있습니다.

문서에는 공식 BSON 규격이 BSON 날짜 유형을 UTC 날짜 시간으로 참조한다고 나와 있습니다.그리고 그것이 당신의 이유일 수 있습니다.LocalDateTime속성이 DB에 저장되기 전에 UTC 시간대로 변환되었습니다.

또한 이러한 혼동을 방지하기 위해 bson 유형을 사용하여 날짜 필드를 업데이트하는 것이 좋습니다.

MongoDB Java Driver 3.7 릴리스: http://mongodb.github.io/mongo-java-driver/3.7/whats-new/ 에서 드라이버가 LocalDate를 지원하는 것을 확인할 수 있습니다.

JSR-310 Instant, LocalDate 및 LocalDateTime 지원 기능이 드라이버에 추가되었습니다.

언급URL : https://stackoverflow.com/questions/45892242/storing-java-8-localdate-in-mongo-db

반응형