Date.parse()不使用highchart

时间:2017-07-04 08:42:38

标签: javascript jquery angularjs highcharts

我在angularjs app中使用HIGHCHART。 我从API日期

获得
var dateTime = new Date(value.date_time); // Wed Jun 07 2017 10:00:00 GMT+0200 (Central European Summer Time)
转换为unixTimeStamp后

var unixTimeStamp1 = dateTime.getTime(); // 1496822400000

这在打开高保真时在google chrome和firefox中正常工作,但在Safari和IE中无法正常工作。现在我需要转换为毫秒

var unixTimeStamp = Date.parse(unixTimeStamp1); // here i get NaN

并且所有图表都是空的。

如果我尝试这个而不是上面

var unixTimeStamp = new Date(unixTimeStamp1*1000); // Wed May 24 49476 06:00:00 GMT+0200 (Central European Summer Time)

这项工作适用于所有浏览器(IE,Safari,Chrome,Firefox ......)但是,图表中的日期不正确。 有了这个,我在图像波纹管上得到这样的日期 enter image description here

这是正确的日期 enter image description here

如果这是一个重复的问题我很道歉,但我找不到解决问题的正确答案。

1 个答案:

答案 0 :(得分:1)

您不能使用Date.parse来解析该字符串,并确保它适用于每个浏览器 - 请参阅the description of Date.parse

  

由于解析日期字符串的差异,建议始终手动解析字符串,因为结果不一致,尤其是在不同的ECMAScript实现中,其中“2015-10-12 12:00:00”之类的字符串可能会被解析为作为NaN,UTC或当地时区。

如果您的日期格式为yyyy-mm-dd hh:mm:ss,则可以像这样解析:

const date = '2017-06-07 10:00:00'
const d = date.match(/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/)
const parsed = new Date(d[1], d[2], d[3], d[4], d[5], d[6]).getTime()

示例:http://jsfiddle.net/zt1k31sf/