我的日期时间对象采用以下格式:2014-06-24 20:41:18
但Highcharts Date.UTC期望日期为:Date.UTC(2014, 0, 2)
。
转换它的推荐方法是什么?
答案 0 :(得分:2)
我的日期时间对象格式如下:2014-06-24 20:41:18
这不是"日期时间对象",它是一个字符串。不要使用Date构造函数来解析字符串,它会调用已知在浏览器中不一致的Date.parse,即使对于符合ECMA-262 ed 5格式的字符串也是如此。
但是Highcharts Date.UTC希望日期为:Date.UTC(2014,0,2)
如果您只想使用日期部分,并将其视为UTC,您可以这样做:
// Provide a string like 2014-06-23
function parseYMD(s) {
var b = s.split(/\D+/);
return new Date(Date.UTC(b[0], --b[1], b[2]));
}
如果您想要包含时间(以及它的UTC),请将最后一行更改为:
return new Date(Date.UTC(b[0], --b[1], b[2], b[3], b[4], b[5]));
可在所有正在使用的浏览器中可靠地运行。请注意,在ISO 8601中,没有时区的日期应视为本地日期,而不是UTC。
请注意,在某些浏览器中,没有时区的ISO 8601字符串将被视为UTC,在其他浏览器中视为本地区域,其余浏览器视为NaN。