日期字段奇怪的行为

时间:2014-02-18 14:19:59

标签: c# mongodb mongodb-.net-driver

我有一个模型,表示带有日期字段的mongo文档。

class model 
{
    ...

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

    ...
}

我知道mongo会在UTC时间存储值,所以我使用BsonDateTimeOptions属性在当地时间自动表示它们。

当我创建模型的instanse并将其存储到mongo时,它按预期工作。但是,当我从外部源(客户端到我的服务)接收数据并且想要我的模型时,它会存储本地时间。

编译器显示2个不同实例的相同值(在插入mongo之前),但在db中,第一个存储在UTC中,第二个存储在本地时间。

1 个答案:

答案 0 :(得分:0)

我相信你需要在保存之前为你的json解析数据分配一个Kind,无论是本地还是Utc。这将告诉mongo驱动程序它代表什么,以便它在保存之前不会错误地转换为另一种格式。

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