c#(和MongoDB)日期时间转换(从BSON到c#对象)

本文关键字:BSON 对象 日期 MongoDB 时间 转换 | 更新日期: 2023-09-27 18:11:35

我一直在使用MongoDB c#驱动程序,将一些文档从我们当前的数据库转移到MongoDB和其他方式。我得到的问题是(简而言之):虽然从MongoDB文档检索DateTime的方法返回正确的日期/时间,但当分配给我的c#对象的DateTime属性时,它会返回到01/01/0001 12:00:00 AM,也就是说,到min DateTime值。

更多细节:

GetdateTime正在查询MongoDB (rdoc是一个BSON文档)并返回正确的日期/时间:

Console.WriteLine(GetDateTime(rdoc, "recordedDate"));

输出为:

6/3/2010 10:00:00 AM

我将返回值赋给c#对象:

doc.RecordedDate = GetDateTime(rdoc, "recordedDate");

但是当我使用(r是我的c#对象)访问这个属性时:

Console.WriteLine(r.UserID + "," + r.DateCreated);

我得到:123456,1/1/0001 12:00:00 AM

我正在设置我的DateTime字段:

set{ recordedDate = value.ToLocalTime();  }

只是在这里提到,当创建c#文档时,我实际上并没有更新我们的数据库,只是将这些文档保存在内存中,然后将它们重新保存到Mongo(不要问),只是为了测试目的。这应该不会影响我遇到的问题,所有其他字段都可以正常工作。

我知道BSON和。net的DateTime对象之间存在一些不匹配(BSON截断tick数或其他东西),但如果这导致我的问题,请不要这样做…

顺便说一句,我三天前才开始使用c#,所以如果我在这里遗漏了一些基本的和明显的东西,请轻轻地指出来:)。

c#(和MongoDB)日期时间转换(从BSON到c#对象)

你的数据存储方式似乎不匹配。

正在更新属性doc.RecordedDate:

doc.RecordedDate = GetDateTime(rdoc, "recordedDate");

但是你正在读取属性DateCreated:

Console.WriteLine(r.UserID + "," + r.DateCreated)

这是写入第三个变量'recordedDate':

set{ recordedDate = value.ToLocalTime();  }

你正在写一个名为RecordedDate的东西,但从一个名为DateCreated的东西读取。你在哪里更新DateCreated?医生之间的关系是什么?RecordedDate和r.d datecreated ?recordedDate和doc之间的关系是什么?RecordedDate还是r.d datecreated ?