我有一个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>