由于MongoDb存储时间按照UTC时间存储的,其官方驱动MongoDB.driver存储时间的时候将本地时间转换为了utc时间,但它有个蛋疼的bug,读取的时候非常蛋疼的是返回的是utc使时间。一个非常直观的体现是时间类型字段存储后和再读入的是不一致的,一个简单的示例如下:

table.InsertOne(newMyClass()

{

Time=DateTime.Now,

});foreach (var data in table.Find(_=> true).ToList())

{

Console.WriteLine(data.Time);

}

运行这段代码就会发现时间读取出来和写入的相差8个小时(北京时间)。

本身MongoDB官方是知道这个的,也有很多人反应的这一问题:DateTime timezone problem。,但官方是没有修改的意向的,官方给出的修改方法是: 在时间类型属性字段上显式标注是否为本地时间

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

这个方法虽然看起来没有什么问题,但用起来麻烦不已,一来要在一些不相关的DTO库中引入Bson的库,另一方面加标记很容易遗漏。实际上操作起来是很不方便的。

于是,有人有找到了另一种方法,那就是全局设置时间序列化的方式:

DateTimeSerializationOptions.Defaults = DateTimeSerializationOptions.LocalInstance;

这个方法只在MongoDb.Driver 1.x版本中有效,到了2.x后,DateTimeSerializationOptions已经被废弃了,可以使用如下方法:

var serializer = newDateTimeSerializer(DateTimeKind.Local, BsonType.DateTime);

BsonSerializer.RegisterSerializer(typeof(DateTime), serializer);

参考文章:

mongodb 服务器时区设置_关于MongoDB时区问题相关推荐

  1. mysql8时区设置_解决MySQL8.0时区的问题步骤

    软件版本 Windows:Windows10 MySQL:mysql-8.0.16-winx64.zip 问题描述 java将当前时间保存到MySQL数据库时,MySQL中的时间不正确 问题分析 原因 ...

  2. springboot mysql时区设置_java/springboot/mysql时区问题解决方案

    解决步骤: 先理清楚逻辑 数据从mysql查出-->进入docker(没容器化跳过)-->进入相应的应用程序(比如java或者框架springboot之类的)-->程序处理完输出返回 ...

  3. mongodb 服务器时区设置_关于MongoDB-Balancer设置时间窗口的问题

    ##7月1日19点过5分,设置时间窗口为12:00-12:10 [mongodb@cst ~]$ date Wed Jul 1 19:05:41 CST 2015 [mongodb@cst ~]$ / ...

  4. mysql数据库连接时区设置_springboot 连接数据库之时区设置

    抽空查看以前的开发日志,发现了一些"问题"日志,决定整理后陆陆续续发出来吧,也为有需要的话小伙伴提供点帮助. 在springboot启动之时,报错了,一看应该就是连接MySql数据 ...

  5. mongodb更新某个字段_直播 | MongoDB开源数据库的云上之路

    本文转自阿里巴巴数据库技术 来了来了!就在今天(11月26号)阿里云-MongoDB战略合作发布会真的来了!一直被模仿从未没超越的开源界大牛MongoDB与亚太区云数据库TOP 1 阿里云数据库要联手 ...

  6. 修改mongodb最大查询数_关于MongoDB最大连接数的查看与修改

    在Linux平台下,无论是64位或者32位的MongoDB默认最大连接数都是819,WIN平台不知道,估计也没有人在 WIN平台下使用MongoDB做生产 在Linux平台下,无论是64位或者32位的 ...

  7. 曙光服务器bios设置_浪潮服务器PM8060阵列卡,如何做热备盘?操作相对有点复杂...

    春节前安装调试了一台浪潮服务器,型号:5270M5,配置:2颗银牌4210 / 64G 内存 / 服务器固态硬盘:480G / 机械硬盘:8块600G SAS 3.5寸 15000转硬盘 / 1+1冗 ...

  8. esxi时区设置 +8_Go语言MySQL时区问题

    原文见:Go语言MySQL时区问题 - Jiajun的编程随想 最近由于我要统一技术栈,因此把原本使用SQLite做存储的数据全部迁移到MySQL.博客也是.不过当我检查数据库时,发现时间和 我产生数 ...

  9. mongodb 导出 带条件_将 MongoDB 导出成 csv

    **[摘要]** 将 Mongodb 数据结构转换成结构化的数据需求,我们可利用集算器 SPL 语言来进行辅助实现.若想了解更多,请前往乾学院:将 MongoDB 导出成 csv! 来源:https: ...

最新文章

  1. 如何看待 2020 届校招算法岗「爆炸」的情况?
  2. 【C++ 语言】面向对象 ( 成员函数 | 常量函数 | 友元函数 | 友元类 | 单例类 )
  3. Java面试知识点:多线程
  4. Serverless 落地挑战与蚂蚁金服实践
  5. 【CentOS】NFS服务器的安装与配置
  6. python中concat的用法_python pandas concat用法及代码示例
  7. A股开盘:深证区块链50指数跌0.46%,泰豪科技涨停
  8. 串口接收到的字符型数据如何转化成数字
  9. XML:体验学习的乐趣之XML总结
  10. Android Dialog Activity
  11. 汇编语言学习之安装编译器及书籍选择
  12. HTML5 全局属性
  13. 导数的四则运算法则_导数、微分、积分之间的区别与联系
  14. 对接微信支付之网页支付详解
  15. 时之歌 服务器维护,时之歌抽卡卡住了怎么办 时之歌手游招募吞卡解决方法
  16. 孙鑫VC++学习笔记(转载至程序员之家--虎非龙)[11--15]
  17. 针对Intel芯片mac、win平台对cpu功耗、频率、电源等信息检测
  18. Firefox报错——Gah. Your tab just crashed.
  19. 使用Python和OpenCV标记超级像素的炫彩度
  20. 正则表达式入门级别详细教程

热门文章

  1. 快速画简笔画网站推荐以及思考
  2. outlook邮箱附件无法打开,提示无法创建文件
  3. 三十分钟理解:矩阵Cholesky分解,及其在求解线性方程组、矩阵逆的应用
  4. maya api 初接触
  5. HUD - 1873
  6. 使用Zerotier实现免费内网穿透
  7. 统计一TXT文档中单词出现频率,输出频率最高的10个单词
  8. 喜茶入股7家茶饮,从“打工仔”做起了“金主爸爸”?
  9. date_sub的用法
  10. 网络空间安全未来就业前景和就业方向,看着六点