【问题标题】:How do I convert to UTC?如何转换为 UTC?
【发布时间】:2013-06-13 14:21:58
【问题描述】:

对于 highstock / highcharts 我需要这样的日期格式:

series: [{
    data: [[1331028000000, 5], [1331031600000, 6], [1331035200000, 4]]
}]

每个数组的第一个数字是日期戳,我认为是UTC。当我得到需要放入图表的数据时,我得到的是这样的:

"2013-06-08T06:00:00.000-07:00"

我的问题是,这是什么格式?以及我应该如何将其转换为我需要的 highstock / highcharts。

【问题讨论】:

  • "2013-06-08T06:00:00.000-07:00" 的格式是 ISO 8601-07:00 是一个时区,T 将日期与时间分开。 1331028000000 是以 ms 为单位的时间。
  • UTC 是时区,不是格式。

标签: javascript jquery date highcharts


【解决方案1】:

只需将该字符串放入 Date() 函数中,您就应该将其作为 Javascript Date 对象取回。

var myDate = new Date('2013-06-08T06:00:00.000-07:00');

要将其作为正式的 UNIX 时间戳取回,您只需将其转换回一个数字,然后除以 1000(因为在一秒钟内有一千个 ms),但看起来像您正在寻找 ms 值,而不是正式的 UNIX 时间戳。

最简单的方法是使用 + 前缀运算符。

var myUnixTimestamp = +myDate;
// 1370696400000

【讨论】:

  • @Watson ~ 好吧,这就是你的 ISO 8601 字符串所说的,所以如果它没有评估出来,我会非常担心。
  • 该行是否与 var myUnixTimestamp = '' + myDate; 相同?
  • @Watson ~ 不,+myDate 之间可能不应该有空格。好吧,它应该与空格一起使用 --- 因为运算符可能已定义 --- 我只是发现它在没有空格的情况下读起来更清晰。
  • 澄清概念:经典的 Unix 时间戳以 为单位。 JavaScript 使用 毫秒。因此1370696400000 等价于1370696400 Unix 时间戳。
  • 可能值得注意的是+'123' === 123+'-123' === -123等,但+'abc'NaN,而不是0
【解决方案2】:
    var date = new Date("2013-06-08T06:00:00.000-07:00");
    console.log(date.getTime());
  //or console.log(date.valueOf());

【讨论】:

  • 呃……你是不是错过了什么?此代码基本上将1331028000000 转换为1331028000000 ;-P
  • @Álvaro G. Vicario:只是一个示例代码。重点是使用 date.getTime() 或 date.valueOf() 转换为自 01/01/1970(UTC 时间)以来的毫秒数
  • @Watson:更新,您已经接受了另一个答案。也许您可以将其视为其他解决方案的参考。
【解决方案3】:

毫秒,试试下面的代码。

var date = new Date(1331028000000);
console.log(date.toString())

【讨论】:

猜你喜欢
  • 2011-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-19
  • 1970-01-01
  • 2019-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多