这已经给我带来了很长一段时间的麻烦,我不认为这会如此困难。我有一个带有一些日期的模型,以及来自API的日期数据,如:
{
...
tollgate1: '2016-04-15',
tollgate2: '2017-01-01',
projectClose: '2016-10-21',
}
我创建了一个格式日期助手(使用moment.js)来格式化视图模式中的日期,如下所示:
这表明它正确。但是,当我切换到编辑模式时,输入元素仍然引用相同的值,但现在它们都提前一天了!
一段时间以来一直令人抓狂。我认为这可能是由于数据中的时区信息,但由于我无法更改提供给我的应用程序的数据,我怎么能让它只显示数据中的日期,无论时区?例如,对于Tollgate 1日期,无论用户在世界的哪个位置,我都希望它显示在4月15日。
答案 0 :(得分:1)
好吧,就像许多事情一样,这不仅仅是一个Ember事情,而只是一个JavaScript事物。这是真的一次很难学习!
由于我从API下来的日期没有时区,因此它们被假定为GMT,因此我的EST时区为-4小时,使其显示为前一天。显然,moment.js有一些内置的处理方式,这就是为什么格式化日期助手工作正常。
我要解决的是只为我的模型添加每个日期的计算属性,并通过从输入日期中拉出部分来创建一个新的Date对象,如下所示:
function convertDateToUtc(d) {
if(d) {
return new Date(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate());
} else {
return null;
}
}
export default DS.Model.extend({
...
tollgate1Date: Ember.computed('tollgate1', function() {
return convertDateToUtc(this.get('tollgate1'));
})
});