moment.js 不从时间戳解析时间

moment.js doesn't parse time from timestamp

我正在尝试从 json 数据集中用 moment.js 解析时间戳。当我使用 moment.format('MMMM Do YYYY, H:mm:ss') 时,输出是 May 25th 2361, 0:00:00 for 12351223423。所有测试的时间戳都是一样的。为什么它不显示确切的 time/how 来解决这个问题?

我的 Angular 控制器:

$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>

编辑:Here is a online-demo. Error persists. Source is on github.

好吧,我花了比应该的时间更长的时间...

dt.startOf('day') 修改 dt,它不会克隆。

moment().startOf(String);
Mutates the original moment by setting it to the start of a unit of time.

所以使用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