Javascript 新日期(历元)在余烬组件内返回无效日期

Javascript 新日期(历元)在余烬组件内返回无效日期,javascript,ember.js,Javascript,Ember.js,我在余烬应用程序中使用了一个datefilter组件,该组件仅在初始渲染时有效,在重新加载页面时无效,甚至在保存文件时也有效(这会触发应用程序进行实时更新) 在我的应用程序的主模板中,我像这样呈现日期过滤器,并向其传递一个unix时间戳 {{date-filter unixepoch=item.date}} 然后,在components/date filter.js中,我使用名为timeConverter的计算属性将unix历元更改为根据用户选择的语言格式化的时间字符串,然后在我的templa

我在余烬应用程序中使用了一个
datefilter
组件,该组件仅在初始渲染时有效,在重新加载页面时无效,甚至在保存文件时也有效(这会触发应用程序进行实时更新)

在我的应用程序的主模板中,我像这样呈现日期过滤器,并向其传递一个unix时间戳

{{date-filter unixepoch=item.date}}
然后,在
components/date filter.js
中,我使用名为
timeConverter
的计算属性将unix历元更改为根据用户选择的语言格式化的时间字符串,然后在我的
templates/components/date filter.hbs
文件中显示结果

timeConverter: function(){
    //step 1: get the epoch I passed in to the component
    var epoch = this.get('unixepoch');
    //step 2: create a human readable date string such as `Jun 29, 2015, 12:36PM`
    var datestring = new Date(epoch)

    //do language formatting --code omitted as the problem is with step2

}
如果我刷新页面甚至保存文件,则步骤2会失败(返回无效日期)。它总是在第一次调用此组件时返回正确的日期字符串。即使我在父组件中执行了
newdate(epoch)
,并尝试将结果传递给该组件(以进行外语格式化),我也会遇到同样的问题


问题:如何确定新日期(历元)内发生了什么,或者它是否与组件相关?

我怀疑您的
历元
值是一个字符串(所有数字)。如果是,那么

var datestring = new Date(+epoch);
// Note ------------------^
…会解决的。请注意,JavaScript使用的是较新的“自纪元起的毫秒数”,而不是较旧的(原始的)“自纪元起的秒数”。因此,如果这样做开始给您提供日期,但它们的时间比您预期的要早得多,您可能需要
Epoch*1000


如果它是一个不全是数字的字符串,那么它根本就不是历元值。规范要求
new Date
理解的唯一字符串值是一个和(关于没有时区指示器时要做什么)。

我们需要知道从
epoch
中得到的值是什么。您为初始化传递的具体值是什么?@Pointy这是由Date.new创建的unix epoch(),但当它被保存时,它被保存为一个字符串,这就是为什么它在初始渲染后没有正确计算。t.JCrowder的回答为我解决了这个问题。@brainLikeDullPencil::-)嘿,有时我觉得很幸运。嗯,这是一个有根据的猜测。。。