C# 操作MongoDB时间 时差问题

手在键盘敲很轻 2018-12-17 10:16:13
SqlServer需要把一部分数据转移到MongoDB,提高系统查询效率,无奈时间问题困扰,循环插入大概两万条数据吧
AAA loanReport=new AAA();
loanReport.DailyDate =DateTime.SpecifyKind(dt,DateTimeKind.Utc);
进去后数据库时间还是相差8个钟,ok,另一种方法
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime CreateDate { get; set; }
2018-12-16 16:00:00.000Z
好,是这样子的,还是一样,MongoDB驱动没做好是无疑了,但是有没解决的方案呢,求大神!!!
...全文
424 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
sql server 保存时间时,没有时区概念,这其实是 sql server 的一个技术债,而且可能解决不了。而 MongoDB 则天生有时区概念。现在在于程序员有没有时区概念?! 当你从 sql server 读取数据,假设你数据库中的日期时间客户确定是北京时间时,那么你将数据转存到 MongoDB 时,就应该将北京时间变为格林威治时间。因为 MongoDB 显然更国际化,更适合大系统的概念。
  • 打赏
  • 举报
回复
“2018-12-16 16:00:00.000Z”这种字符串表达形式,清楚地说明了 utc 时间是多少。至于说不同时区的所谓 local 时间,那么是应用程序(而不是什么数据库存储)来转换的,你既然在内存中的对象属性要用 local time 那么自然就差8个小时(假设你使用北京时间)。所以你贴出的数据库表示是很正常的,这体现出“MongoDB驱动”也很正常,有什么问题?
  • 打赏
  • 举报
回复
utc时间跟北京时间本来就差8个小时,这不是基本的嘛! 每一个电脑、每一个服务器,都有可能默认设置为不同时区。例如同样是在北京,保不齐某个大公司里正在开会的某一个人是从韩国来的、他的笔记本设置的是首尔时间,而另外一个人是美国东部时间,还有一个人的电脑设置的是美国西部时间。对于服务器也是如此,一些大网站在全世界各地都可能分别有接入服务器。所以胡乱用什么 DateTimeKind.Local 或者 .Utc 都是不对的,设计者要有起码的规范。 在你的代码中,用了 utc 时间,这可以体现一种规范。然后又用了 local 时间,这算是什么?
porschev 2018-12-17
  • 打赏
  • 举报
回复
没有c#用MongoDB的经验 给个链接参考 https://www.cnblogs.com/TianFang/p/8783121.html
xian_wwq 2018-12-17
  • 打赏
  • 举报
回复
建议统一使用UTC时间,这样就不用纠结于各种转换了
xuzuning 2018-12-17
  • 打赏
  • 举报
回复
Sql Server 没有时区的概念,是因为 windows 有,没有必要在搞一套
MySql 有时区概念,你可以修改配置文件,或令其从操作系统获取
MongoDB 没有时区概念,那是因为他认为全世界都是日不落帝国的子民

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧