首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB TimeZone

MongoDB TimeZone
EN

Stack Overflow用户
提问于 2015-12-04 17:36:03
回答 2查看 31.7K关注 0票数 6

我写入我的mongoDB数据库,例如startDate,开始日期总是一个星期的星期一(我使用的是欧洲中部时区)。

代码语言:javascript
复制
"startDate" : ISODate("2014-12-28T23:00:00Z"), 
"startDate" : ISODate("2015-03-29T22:00:00Z")
"startDate" : ISODate("2015-04-05T22:00:00Z"), 
"startDate" : ISODate("2015-10-25T23:00:00Z")

我很困惑,因为有时日期格式是:

代码语言:javascript
复制
2014-12-28T23:00:00Z  (sunday, 23h)

有时候是这样的:

代码语言:javascript
复制
2015-04-05T22:00:00Z (sunday, 22h)

在Java代码中,日期是星期一,00h ->,这是可以的。有人知道这里发生了什么吗,为什么记录的时间不同,以及如何防止这种情况?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-04 17:40:48

夏令时

默认情况下,MongoDB将日期存储在UTC中。

由于您所在的是中欧时区,这意味着根据日期是在Daylight Saving Time (DST) 时段内还是之外,会有一个或两个小时的时差。2015年DST从3月29日开始,10月25日结束。因此,12月28日的偏移量为1小时,4月5日的偏移量为2小时。

如果要防止出现这种情况,则应在将本地日期时间值保存到MongoDB之前将其转换为UTC时间。或者,正如Markus Mahlberg所指出的,在加载日期后转换为本地时间。

票数 15
EN

Stack Overflow用户

发布于 2019-06-14 19:04:12

您可以将其转换为本地时间。

代码语言:javascript
复制
DateTime startDate = dateFromDb.ToLocalTime();

您还可以创建如下属性:

代码语言:javascript
复制
DateTime _startDate = DateTime.Now;
public DateTime StartTime { get => _startDate; set => _startDate = value.ToLocalTime(); }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34085053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档