[英]C# (and MongoDB) DateTime conversion (from BSON to C# object)
我一直在使用MongoDB C#驱动程序,将一些文档从当前数据库传输到MongoDB,反之亦然。 我得到的问题是(简而言之):尽管从MongoDB文档中检索DateTime的方法返回了正确的日期/时间,但是当分配给我的C#对象的DateTime属性时,它将恢复为01/01/0001 12:00:00 AM,即最小DateTime值。
更多细节:
GetdateTime正在查询MongoDB(rdoc是BSON文档)并返回正确的日期/时间:
Console.WriteLine(GetDateTime(rdoc, "recordedDate"));
输出为:
2010/6/3上午10:00:00
我将返回值分配给我的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会截断Ticks数或其他内容),但是如果这导致了我的问题,那是不会的...
顺便说一句,我只是三天前才开始使用c#,因此,如果我在这里缺少一些基本且显而易见的内容,请轻轻指出:)。
您似乎在存储数据的方式上不匹配。
这将更新属性doc.RecordedDate
:
doc.RecordedDate = GetDateTime(rdoc, "recordedDate");
但是您正在从属性DateCreated
中读取:
Console.WriteLine(r.UserID + "," + r.DateCreated)
这正在写入第三个变量“ recordedDate”:
set{ recordedDate = value.ToLocalTime(); }
您正在写一个名为RecordedDate的东西,但正在读取一个名为DateCreated的东西。 您实际上在哪里更新DateCreated? doc.RecordedDate和r.DateCreated之间是什么关系? recordedDate和doc.RecordedDate或r.DateCreated之间是什么关系?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.