use*_*947 7 c# datetime-format mongodb
我尝试在MongoDB中插入本地时间
var time = DateTime.Now; // 03.05.2014 18:30:30
var query = new QueryDocument
{
{ "time", nowTime}
};
collection3.Insert(query);
Run Code Online (Sandbox Code Playgroud)
但在数据库中我看到ISODate("2014-05-03T15:30:30.170Z")
,
那一定是ISODate("2014-05-03T18:30:30.300Z")
.
请帮我!
Jon*_*eet 13
我觉得你被时区搞糊涂了.该Z
字符串的结尾表明,它在UTC.当你发布这个问题时,它就在15:30 UTC之后.
我强烈怀疑正在记录正确的时间 - 但是它被记录为及时,而没有参考特定的时区.然后,您可以将其转换为您以后想要的任何时区,但记录UTC时间几乎总是正确的方法.
顺便说一句,你可以通过使用UtcNow
开始来更清楚.这样,你就不会试图获得"本地"时间.
看看MongoDB文档,似乎内部表示只是自Unix时代以来的毫秒数 - 所以再次没有时区或UTC与本地时间之间的偏移.如果要存储一个值,该值可以转换回您在录制时看到的当地时间(即使您现在位于不同的时区),您应该将时区ID和/或UTC偏移存储为单独的价值.这不是经常需要的,但它是一种选择.
小智 7
MongoDB驱动程序正在将DateTime转换为UTC.
如果您不想打扰时区,可以将类型更改为UTC:
time = DateTime.SpecifyKind(time, DateTimeKind.Utc);
Run Code Online (Sandbox Code Playgroud)
我不建议这样做,因为数据库将存储"错误"日期,但它会显示ISODate("2014-05-03T18:30:30.170Z").
小智 6
只需通过“BsonDateTimeOptions”属性定义日期时间的“Kind”并将其设置为本地:
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime SomeDateProperty {get;set;}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10206 次 |
最近记录: |