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