日期字段奇怪的行为
问题描述:
我有一个模型,用一个日期字段表示一个mongo文档。日期字段奇怪的行为
class model
{
...
[BsonElement("dateCreated")]
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime DateCreated { get; set; }
...
}
我知道蒙戈店在UTC时间值,所以我用BsonDateTimeOptions
属性在当地时间自动代表他们。
当我创建模型的实例并将其存储到mongo时,它按预期工作。但是,当我从外部数据源(客户端到我的服务)接收数据并将其删除到我的模型时,它会存储当地时间。
编译器为2个不同的实例显示相同的值(在将它们插入到mongo之前),但在db中,第一个存储在UTC,第二个存储在本地时间。
答
我相信你需要在保存之前为你的json解析数据分配一个Kind,无论是本地还是Utc。这将告诉mongo驱动程序它代表什么,以便它在保存之前不会错误地转换为另一种格式。
someDate = DateTime.SpecifyKind(someDate, DateTimeKind.Utc)
在插入它之前,请查看每个值的'Kind'属性。 –
我刚刚检查过它。第一个对象具有'Kind = Unspecified'和反序列化的'Kind = Local'。 – Schaliasos
不确定这里“先”和“反序列化”是什么意思,但这将是问题的根源。找出“未指定”版本的真正含义...... –