2013-09-01 15 views
5

Dlaczego ten fragment kodu zwrócił jutrzejszą datę?toISOString() zwraca niewłaściwą datę

To musi wrócić 2013-08-31, a nie 2013-09-01, ponieważ mamy 31 sierpnia.

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

bo to UTC – soulcheck

+0

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

+1

Jak mogę wziąć mój Jour a nie jeden UTC? – Francois

Odpowiedz

3

Jest w UTC.

Jeśli chcesz uzyskać dostęp do lokalnej strefy czasowej trzeba formatować datę samemu (korzystając getYear()getMonth() etc.) lub użyć niektóre biblioteki jak date.js że sformatuje datę dla Ciebie.

Z date.js to całkiem proste:

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

edit

Jak zauważył @MattJohnson date.js została porzucona, ale można skorzystać z alternatywy jak moment.js.

+0

Jak sformatować datę siebie proszę? – Francois

+0

@Francois za pomocą getYear() itp., Ale rozwiązanie znalezione w drugim pytaniu jest lepsze. Użycie date.js jest jeszcze lepsze. – soulcheck

+3

Skorzystaj z [moment.js] (http://momentjs.com), not date.js. [Zostało porzucone] (http://stackoverflow.com/tags/datejs/info). –

Powiązane problemy