개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.14 09:28

MongoDBBSONUTCDateTime::unserialize 관련 질문

목록
  • 프로토콜연구가 23시간 전 2025.07.14 09:28 새글
  • 9
    1
저는 MongoDBBSONUTCDateTime::unserialize을 사용하여 UTC 시간을 deserialize하는 중인데, 다음과 같은 문제가 있습니다.

저는 MongoDBBSONUTCDateTime::unserialize을 사용하여 UTC 시간을 deserialize하는 중인데, 다음과 같은 문제가 있습니다.
serialize된 데이터를 unserializing 하는 과정에서, UTC 시간이 정확한 시간으로.deserialize이 되지 않습니다.
해당 시간은 -1초가 추가되는 현상이 발생합니다.

unserialize을 사용하여 UTC 시간을 deserialize하는 방법을 알려주시거나,
해당 현상이 발생하는 이유를 알려주시거나,
해당 현상이 해결되는 방법을 알려주시면 감사하겠습니다.

아래는 serialize된 데이터의 예시입니다.

json

{

    "date": {

        "$date": "2022-01-01T00:00:00.000Z"

    }

}



아래는 deserialize된 데이터의 예시입니다.

json

{

    "date": {

        "$date": "2021-12-31T23:59:59.999Z"

    }

}



해당 현상이 발생하는 이유를 알려주시거나,
해당 현상이 해결되는 방법을 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  23시간 전



    MongoDBBSONUTCDateTime::unserialize을 사용하여 UTC 시간을 deserialize하는 과정에서 -1초가 추가되는 현상은 MongoDB의 버그로 인한 문제입니다.

    이 문제는 MongoDB 3.6 버전 이후로 발생하는 문제로, 이전 버전에서는 문제가 발생하지 않았습니다.

    해결 방법은 MongoDB의 버전을 업그레이드하는 것입니다. MongoDB 4.0 버전 이상에서 이 문제는 해결됩니다.

    또한, MongoDB 3.6 버전에서는 `MongoDBBSONUTCDateTime::unserialize` 메서드를 사용하는 대신 `MongoDBBSON::fromUTCDateTime` 메서드를 사용하는 것이 좋습니다.

    이 메서드는 MongoDB 3.6 버전에서 문제가 발생하지 않습니다.

    아래는 예제입니다.

    #hostingforum.kr
    php
    
    $utcDateTime = new MongoDBBSONUTCDateTime(new DateTime('2022-01-01T00:00:00.000Z'));
    
    $serializedDateTime = $utcDateTime->serialize();
    
    
    
    // MongoDB 3.6 버전 이상에서 사용하는 방법
    
    $unserializedDateTime = MongoDBBSON::fromUTCDateTime($serializedDateTime);
    
    
    
    // MongoDB 3.6 버전에서 사용하는 방법
    
    $unserializedDateTime = MongoDBBSONUTCDateTime::unserialize($serializedDateTime);
    
    


    이러한 방법을 사용하면 -1초가 추가되는 문제를 해결할 수 있습니다.

    2025-07-14 09:29

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 36,023건 / 5 페이지

검색

게시물 검색