首页 > 解决方案 > MomentJS 将 Unix 转换为本地时区并从现在开始捕获

问题描述

我有一个 unix 时间戳,我试图将其转换为本地时区,然后渲染.fromNow. 但是我似乎找不到转换为本地时区的最佳方法,并且当前的格式化技术不能与.fromNow. 有人可以指出我在格式上做错了什么以及如何获取用户的本地时区吗?

Unix 示例:

1541032289

试图:

moment(1541032289).format('YYYY MM DD').fromNow();

错误信息:

TypeError: moment(...).format(...).fromNow is not a function

更新:

替换后.format()的代码.unix()

代码:

store.zrevrange(zrangeSet, 0, -1, function(err, keys){
        var range = [];
        for (var i = 0; i < keys.length; i ++ ) {
            var keyObj = JSON.parse(keys[i]);
            keyObj.timestamp = moment().unix(keyObj.timestamp).fromNow();
            range.push(keyObj);
        }
        console.log(range);
    });

新错误:

            keyObj.timestamp = moment().unix(keyObj.timestamp).fromNow();
                                                                       ^

TypeError: moment(...).unix(...).fromNow is not a function

标签: momentjs

解决方案


您的代码中有两个问题。首先,在您应该在时刻对象上format调用时返回一个字符串。fromNow()因此,您可以简单地删除format('YYYY MM DD').

第二个问题是您必须使用moment.unix(Number)而不是moment(Number).

正如文档所述:

要从 Unix 时间戳(自 Unix 纪元以来的秒数)创建时刻,请使用 moment.unix(Number).

这是一个现场样本:

console.log( moment.unix(1541032289).fromNow() );
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>


推荐阅读