繁体   English   中英

C#(和MongoDB)DateTime转换(从BSON到C#对象)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM