2014-02-18 10 views
1

날짜 필드가있는 몽고 문서를 나타내는 모델이 있습니다.날짜 필드 이상한 행동

class model 
{ 
    ... 

    [BsonElement("dateCreated")] 
    [BsonDateTimeOptions(Kind = DateTimeKind.Local)] 
    public DateTime DateCreated { get; set; } 

    ... 
} 

나는 UTC 시간에 그 몽고 값을 저장 그래서 난 자동으로 현지 시간에 그들을 대표하는 BsonDateTimeOptions 속성을 사용 알고있다.

모델의 인스 턴스를 작성하여 mongo에 저장하면 예상대로 작동합니다. 그러나 외부 소스 (클라이언트를 서비스로)에서 데이터를 받고 내 모델로 desirializing하면 로컬 시간이 저장됩니다.

컴파일러는 mongo에 삽입하기 전에 두 개의 다른 인스턴스에 대해 동일한 값을 표시하지만 db는 첫 번째를 UTC로 저장하고 두 번째는 현지 시간으로 저장합니다.

+0

각 값의'Kind' 속성을 삽입하기 전에 살펴보십시오. –

+0

방금 ​​확인했습니다. 첫 번째 객체는'Kind = Unspecified'와 deserialized'Kind = Local'을가집니다. – Schaliasos

+0

여기서 "처음"과 "비 직렬화"가 무슨 뜻인지 확실하지 않지만 문제의 근원이 될 것입니다. "지정되지 않은"버전이 실제로 의미하는 것을 해결하십시오 ... –

답변

0

로컬 또는 Utc 여부에 상관없이 저장 전에 json 파싱 된 데이터에 종류를 지정해야한다고 생각합니다. 그렇게하면 mongo 드라이버가 나타내는 내용을 알 수 있으므로 저장하기 전에 다른 형식으로 잘못 변환되지 않습니다.

someDate = DateTime.SpecifyKind(someDate, DateTimeKind.Utc)