当前位置:  开发笔记 > 编程语言 > 正文

如何妥善保存日期?

如何解决《如何妥善保存日期?》经验,为你挑选了1个好方法。

我正在尝试保存日期(使用C#官方驱动程序):

val = DateTime.Parse(value).Date; //Here date is {11/11/2011 12:00:00 AM}
var update = Update.Set("Date", val);
...

当我从数据库中选择日期时,值为{11/10/2011 10:00:00 PM}

如何只保存我想要的日期?



1> Andrew Orsic..:

默认情况下c#驱动程序(没有额外的设置)将本地日期作为utc日期保存到数据库中(日期 - 时区偏移)但是没有任何操作就回读(因此,utc日期).

因此,当您从数据库加载日期时间时,您将在2小时内收到差异(您的时区偏移).在反序列化过程中,有两种方法可以说mongodb c#driver将utc日期转换为本地时区日期:

1.通过特定日期字段的属性:

[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime SomeDateProperty {get;set;}

2.通过所有日期时间字段的全局设置(默认为UtcInstance):

DateTimeSerializationOptions.Defaults = DateTimeSerializationOptions.LocalInstance;

一旦你做#1或#2,你会看到当地日期.

更新:


#2在最新的驱动程序版本中已经过时,因此请使用下面的代码:

BsonSerializer.RegisterSerializer(typeof(DateTime), 
             new DateTimeSerializer(DateTimeSerializationOptions.LocalInstance));

更新:


#2又改变了:

BsonSerializer.RegisterSerializer(typeof(DateTime), DateTimeSerializer.LocalInstance);

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有