MomentJS将Unix转换为本地时区并从现在开始捕获



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

Unix示例:

1541032289

尝试:

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

错误消息:

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

更新:

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

代码:

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

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

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

正如文件所述:

要从Unix时间戳(自Unix Epoch以来的秒数(创建时刻,请使用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>

最新更新