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#,所以如果我在这里遗漏了一些基本的和明显的东西,请轻轻地指出来:)。
你的数据存储方式似乎不匹配。
正在更新属性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 ?