MongoDB C#驱动程序和DateTime字段

时间:2016-09-04 14:52:51

标签: c# mongodb datetime-format

我使用C#驱动程序将文档插入MongoDB集合,当我调试应用程序时,其中一个字段类型与日期时间相比我在#34; FrameTimeStamp"中看到了服务器时间。我传递给Mongo的字段,这是我的代码:

FrameDocument frameDoc = new FrameDocument();
frameDoc.Frame = imageBA;
frameDoc.EventCodeId = 1;
frameDoc.SesionId = 1;
frameDoc.FrameTimeStamp = DateTime.Now;
frameDoc.ServerUserId = (int)toMongoDt.Rows[0]["ServerUserId"];
frameDoc.TraderId = (int)toMongoDt.Rows[0]["TraderId"];
frameDoc.ActivePick = (int)toMongoDt.Rows[0]["ActivePick"];
frameDoc.TraderName = (string)toMongoDt.Rows[0]["TraderName"];
frameDoc.ServerUserName = (string)toMongoDt.Rows[0]["ServerUserName"];

var mongoCon = "mongodb://127.0.0.1";
MongoClient client = new MongoClient(mongoCon);
var db = client.GetDatabase("Video");

var frameCollection = db.GetCollection<FrameDocument>("Frame");
frameCollection.InsertOne(frameDoc);
当我读取数据时,在shell中的

我会看到以下格式:   2016-08-14T06:10:3​​3.295Z 并且时间不是服务器时间,它的UTC,我怎么能强制mongo写我的日期时间,?

1 个答案:

答案 0 :(得分:11)

根据CSHARP-185

  

MongoDB以UTC格式存储所有DateTime。你提供的任何当地时间都是   存储在数据库中时转换为UTC。推荐的方法   是在存储之前始终自己将DateTime值转换为UTC   他们在数据库中,这样你完全可以控制。你也可以   告诉C#驱动程序你想在LocalTime中工作,如下所示:

[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime Date
{ get; set; }