我有一个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
答案 0 :(得分:0)
您的代码中有两个问题。首先,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>