我在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 ......)但是,图表中的日期不正确。 有了这个,我在图像波纹管上得到这样的日期
如果这是一个重复的问题我很道歉,但我找不到解决问题的正确答案。
答案 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()