【发布时间】:2015-04-01 17:02:49
【问题描述】:
我在解析从服务器获取的 json 中的日期时遇到问题。日期格式为“YYYY-MM-dd HH-mm-ss CST”(时区在末尾),这是第一个条目:
2015-01-06 00:00:00 CST
我正在使用Highcharts 绘制数据,我需要将其解析为毫秒,以便在 x 轴(日期时间)中正确使用。我对javascript中的日期转换不是很熟悉,所以我不断得到奇怪的结果(以毫秒为单位的解析值总是错误的,因此在不正确的点绘制图表)。
//obj['Time'] has the time value received = "2015-01-06 00:00:00 CST"
var fecha=obj['Time'].split(" ")[0].split("-"),
hora=obj['Time'].split(" ")[1].split(":")[0];
var from = Date.parse( new Date(fecha[0], fecha[1], fecha[2], hora) );
所以,我尝试了以下方法:1) 直接解析 obj['Time']。 2) 使用“手动拆分输入日期”中的显式值创建一个新的日期对象(存储在 'from' 变量中)并对其进行解析。
console.log("Original: " + obj['Time'] );
console.log("1) " + Date.parse(obj['Time']));
console.log("2) " + from);
console.log("Response 1: " + new Date( Date.parse(obj['Time']) ) );
console.log("Response 2: " + new Date( from ) );
这些是结果:
Original: 2015-01-06 00:00:00 CST
1) 1420524000000
2) 1423177200000
Response 1: Tue Jan 06 2015 07:00:00 GMT+0100 (CET)
Response 2: Fri Feb 06 2015 00:00:00 GMT+0100 (CET)
我相信 new Date() 正在使用我的本地时区并进行转换,因为该值的偏移量为 1 小时 (GMT+0100 ???)...所以一切都有不应该存在的“偏移量”。也许有人可以告诉我解析这个的正确方法是什么:)
谢谢!
注意:我不需要在图表中显示时区,我只需要有正确的日期时间值即可。
另外,在创建新的 Date 对象时,我知道月份的 0 索引,这就是为什么它显示为二月而不是一月,但该修复仍然不正确
【问题讨论】:
-
日期操作/操作(包括时区、闰年……)? -> 使用moment.js等库
-
美国中部时区@J.F.Sebastian
-
我去看看@Andreas,语言环境支持看起来不错
标签: javascript date datetime highcharts milliseconds