我有一个由2个字符串组成的数组,它们都在Unix时代。
[1484930449590,1548002449590]
将这些转换回人类可以理解的时间,这给了我今天的日期和2年前的日期。
但是,当我使用MomentJS解析这两个时间戳时:
const start = moment(timeRange[0])
const end = moment(timeRange[1])
我收到以下值:
moment("2001-01-01T00:00:00.000")
moment("2001-04-01T00:00:00.000")
由于某种原因,即使年份应该是2019年和2017年,momentJS都会将两个时间戳都转换为2001年。
首先解析字符串不会使事情变得更好:
const start = moment(parseInt(timeRange[0]))
const end = moment(parseInt(timeRange[1]))
现在start
和end
是:
moment("1969-12-31T19:00:00.001")
moment("1969-12-31T19:00:00.004")
有人知道发生了什么事吗?
我尝试了以下解决方案:
console.log(timeRange)
const start = moment(parseInt(timeRange[0]) / 1000)
console.log(start)
const end = moment(parseInt(timeRange[1]) / 1000)
console.log(end)
但没有任何改变:
1484931697215,1548003697215
moment("1969-12-31T19:00:00.000")
moment("1969-12-31T19:00:00.000")
更新:
问题在于,timeRange
是一个数组,我错了。实际上,它实际上是一个字符串。发生这种情况是因为在客户端timeRange
上是一个数组,但是当它作为GET请求发送到服务器并用const timeRange = req.query.timeRange
进行检索时,它被转换为字符串。
答案 0 :(得分:0)
您的时间戳以毫秒为单位,而不是以秒为单位。尝试先除以1000:
const start = moment(parseInt(timeRange[0]/1000))
const end = moment(parseInt(timeRange[1]/1000))
那应该给您正确的日期
答案 1 :(得分:0)
问题在于,timeRange
是一个数组,我错了。实际上,它实际上是一个字符串。发生这种情况是因为在客户端timeRange
上是一个数组,但是当它作为GET请求的一部分发送到服务器并用const timeRange = req.query.timeRange
检索时,它被转换为字符串。>
解决方案是将timeRange
重新转换为数组:
const times = req.query.timeRange.split(",")
const startDate = moment(parseInt(times[0]))
const endDate = moment(parseInt(times[1]))