2013-09-01 77 views
5

为什么这段代码返回明天的日期?toISOString()返回错误日期

因为我们是8月31日,它必须返回2013-08-31而不是2013-09-01。

http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_toisostring

function myFunction() { 
 
    var d = new Date(); 
 
    var x = document.getElementById("demo"); 
 
    x.innerHTML = d.toISOString(); 
 
}
<p id="demo">Click the button to display the date and time as a string, using the ISO 
 
    standard.</p> 
 
<button onclick="myFunction()">Try it</button>

+5

因为它是UTC – soulcheck

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString – Nayuki

+1

我该如何看待MY Jour而不是UTC? – Francois

回答

3

它在UTC。

如果你想获得当地的时区,你必须自己格式化日期(使用getYear()getMonth()等)或使用一些库,如date.js,这些库将格式化日期。

随着date.js这是很简单的:

(new Date()).format('yyyy-MM-dd') 

编辑

由于@MattJohnson指出date.js已被放弃,但你可以使用的替代品像moment.js

+0

如何格式化日期我自己好吗? – Francois

+0

@Francois通过使用getYear()等,但您在其他问题中找到的解决方案更好。使用date.js更好。 – soulcheck

+3

使用[moment.js](http://momentjs.com),而不是date.js. [已被废弃](http://stackoverflow.com/tags/datejs/info)。 –