admin管理员组文章数量:1345079
The issue: Different formats for new Date() in IE 10 - IE 11. Javascript:
IE 11 / Chrome :
var m = new Date("2014-07-04T04:00:00");
console.log(m); // Fri Jul 04 2014 06:00:00 GMT+0200 (W. Europe Summer Time)
IE 10:
var m = new Date("2014-07-04T04:00:00");
console.log(m); // Fri Jul 4 04:00:00 UTC+0200 2014
Is possible to use one ring to rule them all?
The issue: Different formats for new Date() in IE 10 - IE 11. Javascript:
IE 11 / Chrome :
var m = new Date("2014-07-04T04:00:00");
console.log(m); // Fri Jul 04 2014 06:00:00 GMT+0200 (W. Europe Summer Time)
IE 10:
var m = new Date("2014-07-04T04:00:00");
console.log(m); // Fri Jul 4 04:00:00 UTC+0200 2014
Is possible to use one ring to rule them all?
Share Improve this question asked Jul 1, 2014 at 14:34 Mario LevreroMario Levrero 3,3774 gold badges27 silver badges59 bronze badges 2- 4 Yes, use moment.js: momentjs. – Ian Commented Jul 1, 2014 at 14:36
- 2 For consistent behavior, include a timezone within the string. The issue is a difference in opinion among browser vendors as to which timezone should be assumed when it's absent from a string of this format. – Jonathan Lonowski Commented Jul 1, 2014 at 14:40
2 Answers
Reset to default 7You shouldn't pass a string to new Date
, specifically for this reason.
Instead, you should either give it the individual arguments:
new Date(2014, 6, 4, 4, 0, 0); // remember months are zero-based
Or, if you want to give it a time in UTC, try:
var d = new Date();
d.setUTCFullYear(2014);
d.setUTCMonth(6);
d.setUTCDate(4);
d.setUTCHours(4);
d.setUTCMinutes(0);
d.setUTCSeconds(0);
d.setUTCMilliseconds(0);
You can, of course, make a function to do this.
Alternatively, if you have a timestamp, you can simply do:
var d = new Date();
d.setTime(1404446400000);
To plete the answer a bit. The UTC example given is dangerous, given that you execute on 31st of May (or any other 31st day of month) the following:
var d = new Date();
d.setUTCFullYear(2014);
d.setUTCMonth(5);
d.setUTCDate(4);
d.setUTCHours(4);
d.setUTCMinutes(0);
d.setUTCSeconds(0);
d.setUTCMilliseconds(0);
it will produce "2014 July 4 04:00:00".
So prefer Date.UTC function instead:
new Date(Date.UTC(2014, 5, 4, 4, 0, 0, 0))
it will produce "2014 June 4 04:00:00".
本文标签: Javascript New Date()UTCGMT cross browserStack Overflow
版权声明:本文标题:Javascript New Date()UTC - GMT cross browser - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1743790117a2539410.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论