2013-09-01 96 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)。 –