Fab*_* B. 10 date mongodb node.js backbone.js momentjs
我只想得到专家的确认.我仍然对我认为在这样的环境中存储和处理日期的正确方法感到自信.
我正在为意大利用户开发一个小应用程序.
基本上,他们可以创建一个条目列表,每个条目都有一个creationDate(我只对日期部分感兴趣,时间在我的场景中没用).
因此,用户在"日期"表单字段中输入以下格式的日期:2014年6月22日代表2014年6月的第22天.然后,日期被解析为:
entryData.dateEntry = moment( $(form).find('input[name=dateEntry]').val(), 'DD-MM-YYYY' ).toDate();
Run Code Online (Sandbox Code Playgroud)
最后,我的入门模型被添加到backbone.js集合中,并通过MongoDB中的Node.js + Express存储在服务器端.
查询Mongo的条目,我看到:
2014-06-21 22:00:00 +0000
对应于"dateEntry":日期(1403388000000).
谷歌搜索,我发现MongoDB没有时区的概念.所有日期都以UTC格式存储,我之前创建的日期对象格式为GMT + 2.但我真的很害怕......我怎么能以简单的方式回到当地时区的约会?
接下来,我将在下划线模板中显示条目数据,这样:
<%= moment(dateEntry).format('DD/MM/YYYY') %>
Run Code Online (Sandbox Code Playgroud)
而且......瞧!我得到了当地的'意大利'日期:22/06/2014.
现在,我的问题是:正确的方法是什么?
过程是:在本地时区解析日期=>存储在utc =>以本地时区检索日期.这是一种常见的做法吗?
我还想:我不能简单地避免使用时区和存储我的本地(意大利)时间,因为它是时间(2014-06-22 00:00:00)?这太糟了吗?
是的,通常的做法是将所有时间戳存储为 UTC,然后将其转换为外层中的特定时区。许多框架会自动为您执行此操作,包括 Rails。假设如果您以后也开始适应其他时区,您将不会遇到任何问题,因为您的数据库有 UTC 条目。您将节省时区转换的开销。
如果您只想保存日期,也可以这样做,但我认为您当前的做法没有任何危害 - 以 UTC 格式保存所有内容。我不确定node.js,但会有一些设置可以指定时区(意大利),并且所有转换都会自动发生。您可能会发现此线程很有用:
| 归档时间: |
|
| 查看次数: |
8482 次 |
| 最近记录: |