为什么new.Date()与new.Date()。toISOString()相差1小时?

时间:2015-04-06 18:20:40

标签: javascript datetime methods

请有人向我解释这种情况。

我有以下代码:

<p>Click the button to display the date and time as a string, using the ISO standard.</p>

<button onclick="myFunction()">Try it</button>

<p id="demo1"></p>
<p id="demo"></p>

<script>
function myFunction() {
    var d = new Date();
    var n = d.toISOString();
    document.getElementById("demo1").innerHTML = d;
    document.getElementById("demo").innerHTML = n;
}
</script>

我得到以下结果:

Click the button to display the date and time as a string, using the ISO standard.

Try it

Mon Apr 06 2015 19:07:55 GMT+0100 (GMT Daylight Time)

2015-04-06T18:07:55.739Z

为什么toISOString()方法&#34;采取&#34;距离new Date() ???

1小时

2 个答案:

答案 0 :(得分:2)

代表祖鲁时区的尾随Z(,因为你面对差异)。您的实际时间可能比GMT时间提前1小时。如果你想摆脱这种差异,你可以试试这个:

var x = (new Date()).getTimezoneOffset() * 60000; 
var localISOTime = (new Date(Date.now() - x)).toISOString().slice(0,-1);

旁注:

moment.js是选择摆脱这些问题的不错选择。

答案 1 :(得分:1)

  

toISOString()方法返回简化扩展ISO中的字符串   格式(ISO 8601),总是24个字符长:   YYYY-MM-DDTHH:MM:ss.sssZ。 时区始终为零UTC偏移,如   用后缀“Z”表示。

(强调我的)

请参阅MDN