admin管理员组文章数量:1391981
I am using highcharts to draw charts and parsing the date with new Date()
function. In Chrome and FF, date is parsing fine.
But in IE and Safari, i am getting NaN and Invalid date format resp.
Below is the data i am getting from backend in (element.x) array
2016, 04,05
2016, 04,06
2016, 04,07
2016, 04,08
2016, 04,09
2016, 04,10
Now, i am converting it to Date object in JavaScript as below:
//Loop starts
var xAxis = new Date(element.x);
datas.push([Date.UTC(xAxis.getUTCFullYear(),xAxis.getUTCMonth(), xAxis.getUTCDate())]);
//Loop ends
Now, this operation returns NaN in IE but works very well in chrome as below:
Chrome
Array([0]=>140004454) - Unix Time stamp i get
IE
Array([0]=>NaN)
I am using highcharts to draw charts and parsing the date with new Date()
function. In Chrome and FF, date is parsing fine.
But in IE and Safari, i am getting NaN and Invalid date format resp.
Below is the data i am getting from backend in (element.x) array
2016, 04,05
2016, 04,06
2016, 04,07
2016, 04,08
2016, 04,09
2016, 04,10
Now, i am converting it to Date object in JavaScript as below:
//Loop starts
var xAxis = new Date(element.x);
datas.push([Date.UTC(xAxis.getUTCFullYear(),xAxis.getUTCMonth(), xAxis.getUTCDate())]);
//Loop ends
Now, this operation returns NaN in IE but works very well in chrome as below:
Chrome
Array([0]=>140004454) - Unix Time stamp i get
IE
Array([0]=>NaN)
Share
Improve this question
asked May 3, 2016 at 10:35
GagsGags
3,8398 gold badges53 silver badges101 bronze badges
6
-
1
Once you correctly parse the string, if you want an array of the time values, simply do
datas.push(+xAxis)
, which will coerce the Date to a number, returning its time value. Or usexAxis.getTime()
if you want something clearer. – RobG Commented May 3, 2016 at 22:42 - But the problem was with new Date() function. It was not parsing date correctly. – Gags Commented May 4, 2016 at 1:39
- Hence why it's a ment, not an answer—I'd already given John a +1. :-) Just thought I'd save you a heap of typing and unnecessarily calling Date.UTC. – RobG Commented May 4, 2016 at 1:56
- and yes,,, This also worked.. doind +xAxis after correct parsing.. Awesome :) – Gags Commented May 4, 2016 at 4:09
- 1 Per the the first ment. +xAxis is less to type but perhaps xAxis.getTime() is better for maintenance as it's explicit. Your choice. ;-) – RobG Commented May 4, 2016 at 5:44
1 Answer
Reset to default 5The way new Date(dateString)
parses dateString
varies for different browsers, with some browsers being more flexible than others.
The safest way to create your date, is to...
- split up your
element.x
into its ponents - convert those ponents to integer values
- create a new date using the syntax
new Date(year, month, day)
So, instead of ...
var xAxis = new Date(element.x);
... create your date like this :
var xvals = element.x.split(',');
var xAxis = new Date(
parseInt(xvals[0]),
parseInt(xvals[1]) - 1,
parseInt(xvals[2])
);
That should work in all browsers!
本文标签: jqueryJavaScript new Date() Returning NaN in IESafariStack Overflow
版权声明:本文标题:jquery - JavaScript new Date() Returning NaN in IE, Safari - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1744667367a2618614.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论