为什么在MongoDB中更新DateTime会得到错误的值?

时间:2012-09-10 11:09:26

标签: mongodb datetime nosql

我有一个带有DateUpdated DateTime属性的模型。

在我更新该模型之前,我的模型信息是

before changes

我更新模型信息后

after changes

为什么MongoDB存储错误的DateUpdated值?我用调试器尝试了几次,看起来每次改变这个值但是DateTime错误。

我正在使用C#Driver。

我的更新功能是

var query = Query.EQ("_id", p.UserID);
var update = MongoDB.Driver.Builders.Update.Replace(p);
SafeModeResult success =  MongoRepository.Profiles().Update(query, update);

SafeModeResult总是成功。

我的DateUpdated Bson属性是

[BsonElement("da")]
[BsonDateTimeOptions(Representation = BsonType.Document)]
public DateTime DateUpdated{ get; set; }

1 个答案:

答案 0 :(得分:3)

MongoDB以UTC格式存储DateTime值。您所看到的是将当地时间转换为UTC。

处理时区的最佳方法是将所有数据保存在UTC中(包括数据模型中的数据,而不仅仅是数据库),并且只在您向用户显示值时转换为本地时间。