2016-04-13 3 views
2

Meine Frage ist zu diesem Zitat aus dem Handbuch über die geplanten Termine JavaScript:konsistenter Client Side Datum/Zeitstempel mit JavaScript (unter Berücksichtigung der Timezones)

Hinweis: Parsen von Datumszeichenfolgen mit dem Date-Konstruktor (und Datum. Parsen, sie sind äquivalent) wird dringend empfohlen, aufgrund Browser Unterschiede und Inkonsistenzen.

new Date('2016-04-14') für einen vom Anwender war Wed Apr 13 2016 17:00:00 GMT-0700 (US Mountain Standard Time), auf dem er .toUTCString() verwenden musste.

Wie wird damit umgegangen, wenn sich die Benutzer in vielen verschiedenen Zeitzonen befinden?

+4

timestamp 'new Date() verwenden. GetTime()' anstelle der Zeichenfolge für die Speicherung und Vergleiche – gurvinder372

+0

so brauchen wir nicht '.toUTCString()' & andere solche Funktionen? –

+0

Sofern Sie nicht nur anzeigen möchten (dazu können Sie auch Bibliotheken zum Formatieren verwenden), sehe ich keine Gründe, andere Funktionen zu verwenden. – gurvinder372

Antwort

1

new Date().getTime(); gibt einen Integer-Wert als Uhrzeit auf dem Clientcomputer zurück seit 1970 Jan 1.

Da dies ein Integer-Wert ist, ist es unabhängig von Locales, Browser-Version, verschiedenen Browsern (IE, Chrome, Mozilla oder irgendetwas).

Dies sollte Ihnen konsistente Ergebnisse in Bezug auf die Zeit auf dem Client-Rechner geben solange die Zeitzone des Clients bekannt ist.

Sie können mit new Date().getTime(); unter Verwendung getTimezoneOffset API

var x = new Date(); 
var currentTimeZoneOffsetInHours = x.getTimezoneOffset()/60; 

Zusammen Kunden der Zeitzonen holen sollten Sie konsistente Ergebnisse geben.

1

Wenn Sie

new Date().getTime(); 

es wird Ihnen einen milisecond Zeitstempel zurückkehrt seit 1970-01-01 für die aktuelle Zeitzone, die der Kunde in ist. Dies kann dann wieder in jedem auf ein Datum umgewandelt werden Sprache.

Dies wäre ein besserer Standard Weg, um das Datum herumzugeben, wenn Sie es an und von Servern und zwischen Clients senden. Als Millisekunden Zeitstempel ts in Zeitzone a umgewandelt werden 01.01.2010 und in Zeitzone b umwandeln zu 01/01/2010 konvertieren, wie von 1970-01-01

Hoffnung genommen werden dies macht Sinn