簡體   English   中英

MongoDB C# 驅動程序和日期時間字段

[英]MongoDB C# driver and DateTime field

我正在使用 C# 驅動程序將文檔插入到 MongoDB 集合中,當我調試應用程序時,字段類型與 DateTime 之一我在傳遞給 Mongo 的“FrameTimeStamp”字段中看到服務器時間,這是我的代碼:

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:33.295Z並且時間不是服務器時間,它的 UTC,我如何強制 mongo 將 DateTime 寫為我通過了,?

根據CSHARP-185

MongoDB 以 UTC 格式存儲所有日期時間。 您提供的任何本地時間在存儲在數據庫中時都會轉換為 UTC。 推薦的方法是在將 DateTime 值存儲到數據庫之前始終將它們轉換為 UTC,這樣您就可以完全控制。 您還可以告訴 C# 驅動程序您想在 LocalTime 中工作,如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM