【问题标题】:MomentJS Parsing Unix Timestamp Sent Through GET Request IncorrectlyMomentJS 错误地解析通过 GET 请求发送的 Unix 时间戳
【发布时间】:2019-01-20 16:51:19
【问题描述】:

我有一个包含 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")

由于某种原因,momentJS 将两个时间戳都转换为 2001 年,即使年份应该是 2019 年和 2017 年。

先解析字符串并不能让事情变得更好:

const start = moment(parseInt(timeRange[0]))
const end = moment(parseInt(timeRange[1]))

现在startend 是:

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 检索时,它被转换为字符串。

【问题讨论】:

  • jsfiddle.net/pv3juaqn parseInt 为我工作
  • @apokryfos 发生了一些可疑的事情,也许问题与我在 GET 请求中接收到 timeRange 数组作为 URL 查询参数这一事实有关。我测试了你的小提琴,它在我的电脑上运行良好。我会在我的帖子中更新。
  • 能否发布您如何检索timeRange 或发布var_dump($timeRange)
  • @Laurens 我发现了这个问题,原来timeRange 是一个刺痛,因为我做了const timeRange = req.query.timeRange 并假设timeRange 将是一个数组。

标签: javascript date get momentjs unix-timestamp


【解决方案1】:

您的时间戳以毫秒为单位,而不是以秒为单位。先尝试除以 1000:

const start = moment(parseInt(timeRange[0]/1000))
const end = moment(parseInt(timeRange[1]/1000))

那应该给你正确的日期

【讨论】:

【解决方案2】:

问题是我错了 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]))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    相关资源
    最近更新 更多