How do I convert to UTC?
对于 highstock / highcharts 我需要这样的日期格式:
1 2 3
| series: [{
data: [[1331028000000, 5], [1331031600000, 6], [1331035200000, 4]]
}] |
每个数组的第一个数字是日期戳,我认为是UTC。当我得到需要放入图表的数据时,我得到这样的结果:
1
| "2013-06-08T06:00:00.000-07:00" |
我的问题是,这是什么格式?以及我应该如何将其转换为我需要的 highstock / highcharts。
- "2013-06-08T06:00:00.000-07:00" 的格式是 ISO 8601。-07:00 是时区,T 将日期与时间分开。 1331028000000 是以毫秒为单位的时间。
-
UTC 是时区,而不是格式。
1 2 3
| 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() 转换为自 1970 年 1 月 1 日以来的毫秒(UTC 时间)
-
@Watson:更新,您已经接受了另一个答案。也许您可以将其视为另一种解决方案的参考。
只需将该字符串放入 Date() 函数中,您就应该将其作为 Javascript Date 对象返回。
1
| var myDate = new Date('2013-06-08T06:00:00.000-07:00'); |
要将它作为正式的 UNIX 时间戳取回,您只需将其转换回一个数字,然后除以 1000(因为一秒内有一千个 ms),但看起来像你\\ '正在寻找 ms 值,而不是正式的 UNIX 时间戳。
最简单的方法是使用 + 前缀运算符。
1 2
| var myUnixTimestamp = +myDate;
// 1370696400000 |
- @Watson ~ 好吧,这就是你的 ISO 8601 字符串所说的,所以如果它没有评估出来,我会非常担心。
-
该行是否与 var myUnixTimestamp = '' myDate; 相同? ?
-
@Watson ~ 不,+ 和 myDate 之间可能不应该有空格。好吧,它应该与空格一起使用 --- 正如操作员可能已定义的那样 --- 我只是发现它在没有空格的情况下读起来更干净。
-
澄清概念:经典的 Unix 时间戳以秒为单位。 JavaScript 使用毫秒。因此 1370696400000 等价于 1370696400 Unix 时间戳。
-
JavaScript 中的@Watson +x 将对数字进行强制转换。对于日期,它将获取自 unix 纪元以来以毫秒为单位的值。
-
那么那里发生了什么?不像=
-
@Watson ~ 在 Javascript 中,+ 运算符有三个用途:arithmetic addition(例如 var foo = 1 + 2;)、string concatenation(例如 var foo = 'hello' + 'world';)和 number casting(例如 var foo = '123'; var bar = +foo;)。 += 的使用只是操作和赋值的结合。
-
可能值得注意的是 +'123' === 123、+'-123' === -123 等,但 +'abc' 是 NaN,而不是 0。
-
@PaulS。 ~ 以及 +'123a' 和 parseInt('123a') 之间的行为差??异。
毫秒,试试下面的代码。
1 2
| var date = new Date(1331028000000);
console.log(date.toString()) |
-
Tue Mar 06 2012 11:00:00 GMT+0100 (Hora de verano romance)... 如文档所述。
-
http://stackoverflow.com/questions/498578/how-can-i-convert-??a-date-value-in-iso-??8601-format-to-a-dat??e-object-in -javascri??pt 也可以帮助你。