c# mongodb時間類型字段保存時相差八個小時解決辦法


        /// <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時區生成時間。我們只能在顯示的時候,轉化成本地時間。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM