如何使用 autoform 和 moment 库正确处理流星中的 GMT 偏移量/时区
How to properly deal with GMT offsets / timezones in meteor with autoform and moment library
我 运行 在使用 dates/times 与 mongo 和自动表单时遇到问题。
我从另一个数据库系统开始迁移,我在其中将日期存储为字符串。
迁移发生在 PHP,我使用以下方法转换为 Mongo 日期:
return new MongoDate(strtotime($date));
因此,例如,我从 7/30/1960(1960 年 7 月 30 日)开始
在 Mongodb 中,我看到:
ISODate("1960-07-30T05:00:00.000+0000"),
而且,当我使用助手和 moment 库在 table 网格中查看时:
Template.registerHelper("mdy", function (date) {
if (date) {
return moment(date).format('MM/DD/YYYY');
}
});
我得到:
1960 年 7 月 30 日
然后,我在一个表单中打开它,使用 autoForm
和这样的架构:
someDate: {
type: Date,
}
我仍然看到 07/30/1960
然后我将其保存到数据库中,然后在数据库中查看保存的内容:
ISODate("1960-07-30T00:00:00.000+0000"),
(注意从T05变成了T00)
现在当我在 table 网格中显示时,我看到:
07/29/1960
但有趣的是,如果我在 autoform
中再次打开该记录,它会显示 07/30/1960
所以显然时区或 GMT 偏移或类似问题出现了问题
有人知道我错过了什么吗?
编辑:有趣的观察...我昨天记录了这个问题,4 月 28 日星期二,今天是 4 月 29 日星期三,但问题仍然是 "asked today"
编辑:添加 mongodb 标签...如果这不是 mongo 问题,你们 mongo 可以删除标签!
我找到的解决方案是使用 moment.utc(date) 来格式化日期,而不仅仅是 moment(date)。
因此,助手将是:
Template.registerHelper("mdy", function (date) {
if (date) {
return moment.utc(date).format('MM/DD/YYYY');
}
});
感谢:
http://blog.skylight.io/bringing-sanity-to-javascript-utc-dates-with-moment-js-and-ember-data/
为了朝着正确的方向前进!
我 运行 在使用 dates/times 与 mongo 和自动表单时遇到问题。
我从另一个数据库系统开始迁移,我在其中将日期存储为字符串。
迁移发生在 PHP,我使用以下方法转换为 Mongo 日期:
return new MongoDate(strtotime($date));
因此,例如,我从 7/30/1960(1960 年 7 月 30 日)开始
在 Mongodb 中,我看到:
ISODate("1960-07-30T05:00:00.000+0000"),
而且,当我使用助手和 moment 库在 table 网格中查看时:
Template.registerHelper("mdy", function (date) {
if (date) {
return moment(date).format('MM/DD/YYYY');
}
});
我得到: 1960 年 7 月 30 日
然后,我在一个表单中打开它,使用 autoForm
和这样的架构:
someDate: {
type: Date,
}
我仍然看到 07/30/1960
然后我将其保存到数据库中,然后在数据库中查看保存的内容:
ISODate("1960-07-30T00:00:00.000+0000"),
(注意从T05变成了T00)
现在当我在 table 网格中显示时,我看到:
07/29/1960
但有趣的是,如果我在 autoform
中再次打开该记录,它会显示 07/30/1960
所以显然时区或 GMT 偏移或类似问题出现了问题
有人知道我错过了什么吗?
编辑:有趣的观察...我昨天记录了这个问题,4 月 28 日星期二,今天是 4 月 29 日星期三,但问题仍然是 "asked today"
编辑:添加 mongodb 标签...如果这不是 mongo 问题,你们 mongo 可以删除标签!
我找到的解决方案是使用 moment.utc(date) 来格式化日期,而不仅仅是 moment(date)。
因此,助手将是:
Template.registerHelper("mdy", function (date) {
if (date) {
return moment.utc(date).format('MM/DD/YYYY');
}
});
感谢: http://blog.skylight.io/bringing-sanity-to-javascript-utc-dates-with-moment-js-and-ember-data/ 为了朝着正确的方向前进!