在MongoDB中存储date和时区

我只想要专家的确认。 对于我认为是在这样的环境中存储和处理date的正确方式,我仍然没有信心。

我正在开发一个小应用程序, 只为意大利用户

基本上,他们可以创build一个条目列表,每个条目都有一个creationDate (我只对date部分感兴趣,时间在我的场景中没有用处)。

因此,用户在“date”表格字段中input以下格式的date:2014年6月22日代表2014年6月22日。然后,date被parsing为:

entryData.dateEntry = moment( $(form).find('input[name=dateEntry]').val(), 'DD-MM-YYYY' ).toDate(); 

最后,我的入口模型被添加到一个backbone.js集合中,并通过Node.js + Express在MongoDB中存储在服务器端。

询问Mongo的参赛作品,我看到:

2014-06-21 22:00:00 +0000

对应于“dateEntry”:date(1403388000000)。

谷歌search,我发现,MongoDB没有时区的概念。 所有的date都以UTC存储,我创build的date对象有GMT + 2。 但是我真的很害怕…我怎样才能轻松地取回当地时区的date?

接下来,我将通过以下方式在下划线模板中显示条目数据:

 <%= moment(dateEntry).format('DD/MM/YYYY') %> 

而…瞧! 我得到我当地的“意大利”的date:22/06/2014。

现在,我的问题是,正确的路要走吗?

这个过程是:在本地时区parsingdate=>存储在utc =>在本地时区获取date。 这是常见的做法吗?

我也想:我不能简单地避免使用时区,因为它是utc时间(2014-06-22 00:00:00)吗? 那么糟糕吗?

是的,通常的做法是将所有时间戳存储在UTC中,然后将其转换为外层中的特定时区。 很多框架自动为你做,包括Rails。 比方说,如果前进,你也开始迎合其他时区,因为你的数据库有UTC条目,所以你不会遇到任何问题。 您将节省时区转换的开销。

如果你只想保存date,你也可以这样做,但是我没有看到你现在这样做的任何伤害 – 保存在UTC的一切。 我不确定node.js,但会有一些设置,您可以指定(意大利)的时区,所有的转换将自动发生。 你可能会发现这个线程很有用:

如何在node.js中设置默认时区?