2016-11-09 115 views
0

日期我在我的文档类java.util.Date场。保存时区与MongoDB中

E:G:

@Document(collection = "testdoc") 
public class TestDoc { 
    @Id 
    String id; 
    Date startDate; 
} 

即使我设置与UTC和IST日起,便一直保存在我的收藏,如下面,

"startDate" : ISODate("2015-08-21T18:30:00.000Z") 

我怎样才能节省时间区还在蒙戈收藏? Z在这种情况下代表什么?

回答

2

存储之前进行转换并保存为UTC始终。然后在显示之前在所需的时区重新转换它。

如果你拼命想要的时区存储与偏移可能必须对付它在DB独立字符串,但它不能与日期字段去MongoDB的。

由于目前的MongoDB不允许时区的节省。 下面是开放的JIRA问题或相同。

https://jira.mongodb.org/browse/SERVER-6310

+1

保存,加载和显示是不同的事情。比方说,印度的时间戳已经记录在世界标准时间,现在显示在欧洲。在这种情况下,您不希望将UTC时间转换为欧洲时间,但您希望看到印度原来的时间。但是你是对的,你需要将时区存储在一个单独的字段中。 [实施例这里](https://docs.mongodb.com/manual/tutorial/model-time-data/)。 – Matthias

0

的 'Z' 表示该时间存储在UTC。在存储之前,Mongo会内部转换UTC中的所有本地时间表示。但是,一个建议是将时间与从应用程序收到的时区一起存储。稍后您可以在UTC时间和应用程序逻辑中的时区重建本地时间。

请通过此链接。他们举例说明了如何使用JavaScript对本地时间数据建模。

https://docs.mongodb.com/v3.2/tutorial/model-time-data/