码迷,mamicode.com
首页 > 数据库 > 详细

c# mongodb时间类型字段保存时相差八个小时解决办法

时间:2019-11-22 13:38:42      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:calendar   class   reg   特性   mongodb   本地   options   span   simple   

        /// <summary>
        /// 添加时间
        /// </summary>
        [BsonDateTimeOptions(Kind = DateTimeKind.Local)]
        public DateTime CreatedTime { get; set; }

添加上面这个特性即可。添加了这个特性并不是说在保存时mongodb数据库的时间就是本地时间了。而是说在显示的时候mongodb驱动会根据这个特性自动转化成本地时间。实际存入数据库的还是0时区的时间。

为什么会这么说,原因是看了java mongodb驱动的源码,知道java是这么做的,然后.net应该也是。下面贴出java mongodb驱动的源码:

        if (o instanceof Date) {
            Date d = (Date) o;
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd‘T‘HH:mm:ss.SSS‘Z‘");
            format.setCalendar(new GregorianCalendar(new SimpleTimeZone(0, "GMT")));
            serialize(new BasicDBObject("$date", format.format(d)), buf);
            return;
        }

从源码看到,只要遇到时间类型,不管你的时间值是多少,都会重新按照0时区生成时间。我们只能在显示的时候,转化成本地时间。

c# mongodb时间类型字段保存时相差八个小时解决办法

标签:calendar   class   reg   特性   mongodb   本地   options   span   simple   

原文地址:https://www.cnblogs.com/subendong/p/11910731.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!