我试图用json数据集中的moment.js解析时间戳。当我使用moment.format('MMMM Do YYYY, H:mm:ss')
时,May 25th 2361, 0:00:00
的输出为12351223423
。对于所有测试的时间戳,它都是相同的。为什么它没有显示确切的时间/如何解决这个问题?
我的角度控制器:
$scope.timeFormat = function(timestamp) {
var dt = moment.unix(timestamp);
if(++recheckDate % 25 == 0)
{
// these vars are predefined
today = moment().startOf('day');
yesterday = moment().subtract(1, 'days');
}
if(dt.startOf('day').isSame(today))
return dt.format('[Today], H:mm:ss');
if(dt.startOf('day').isSame(yesterday))
return dt.format('[Yesterday], H:mm:ss');
return dt.format('MMMM Do YYYY, H:mm:ss');
};
html代码(剥离,控制器和应用程序适用于其他字段):
<div ng-repeat="item in data">
<span class="time">{{ timeFormat(item.time) }}</span>
</div>
答案 0 :(得分:2)
嗯,这比我应该花的时间更长......
dt.startOf('day')
修改了dt
,它没有克隆。
moment().startOf(String);
通过将原始时刻设置为单位的开头来突变原始时刻 时间。
因此请使用clone()
:
if(dt.clone().startOf('day').isSame(today))
return dt.format('[Today], H:mm:ss');
if(dt.clone().startOf('day').isSame(yesterday))
return dt.format('[Yesterday], H:mm:ss');
或使用其他一些不会修改时刻的方法。
当你遇到这样的问题时,硬编码所有数字并在任何地方使用console.log
。