2013-04-18 11 views
10

Betrachten Sie den folgenden Code HTML + JavaScript:Ausgabe mit .toISOString() Funktion

<!DOCTYPE html> 
<html> 
<body> 

<p id="demo">Click the button to display a date after changing the hours, minutes, and seconds.</p> 

<button onclick="myFunction()">Try it</button> 
<script> 
function myFunction() 
    { 
    var d = new Date(); 
    d.setHours(0,0,0,0); 
    document.write(d + '<br/>'); 
    document.write('ISO Date '+ d.toISOString() + '<br/>'); 
    //I want it to be 2013-04-17T00:00:00.000Z 
    } 
</script> 
</body> 
</html> 

Ausgang:

Thu Apr 18 2013 00:00:00 GMT+0530 (India Standard Time) 
ISO Date 2013-04-17T18:30:00.000Z 

jemand auf das Verständnis dieser Unterschied in Datum helfen könnte & Zeit

Antwort

25
var d = new Date(); 
d.setHours(-12, d.getTimezoneOffset(), 0, 0); //removing the timezone offset and 12 hours 
console.log(d.toISOString()); //2013-04-17T00:00:00.000Z 

Ich weiß nicht, warum würden Sie einen Tag früher ein ISO Datum brauchen, aber in Fall ist es ein Tippfehler:

var d = new Date(); 
d.setHours(0, -d.getTimezoneOffset(), 0, 0); //removing the timezone offset. 
console.log(d.toISOString()); //2013-04-18T00:00:00.000Z 
+0

Im zweiten Beispiel glaube ich, dass es "d.getTimezoneOffset()" sein sollte. Der Offset kann negativ oder positiv sein. Die Negation erzeugt einen Zusatz, wenn der Wert negativ ist. – dbasch

+0

@dbasch das ist der Punkt. Wenn der Wert negativ ist, sind Sie ** hinter ** UTC0, also müssen Sie die Stunden zu Ihrer Ortszeit hinzufügen. –

3
2013-18-04 00:00:00 GMT+0530 
2013-17-04 18:30:00 GMT+0000 

Dies sind die zwei Zeitstempel. Der erste hat eine Zeitzone, der zweite ist GMT (keine Zeitzonenanpassung). Wenn Sie den zweiten Zeitstempel nehmen und 05:30:00 zu 18:30:00 hinzufügen, erhalten Sie Mitternacht des folgenden Tages. Das entspricht dem ersten Zeitstempel.

+1

Bemerkenswert den Kommentar in OP-Code: '// Ich will es 2013-04-17T00: 00: 00.000Z' sein. Ich denke, er sucht nach einer Möglichkeit, '.toISOString() 'von GMT + 0530 zu GMT + 0000 zu konvertieren. –

+0

@JamesDonnelly: Du hast Recht ... Ich habe die Antwort von Artyom Neustroev, d. H. Entfernen der Zeitzone Offset. Jeden Dank an alle für Ihre Zeit –

+0

Diese "GMT" Suffixe sind keine Zeitzonen, sondern Offsets. Sie sagen nichts über die Umstellung auf Sommerzeit. – Suncat2000

1

Sie können auch Zeitzone wie folgt entfernen:

let birthday = new Date(this.profile.birthday + ' UTC').toISOString(); 
Verwandte Themen