Wie um zu überprüfen, ob die Sommerzeit (Daylight Saving Time) ist in Wirkung und wenn es was ist der offset?
Das ist ein bisschen mein JS-code, für die dies erforderlich ist:
var secDiff=Math.abs(Math.round((utc_date-this.premiere_date)/1000));
this.years=this.calculateUnit(secDiff,(86400*365));
this.days=this.calculateUnit(secDiff-(this.years*(86400*365)),86400);
this.hours=this.calculateUnit((secDiff-(this.years*(86400*365))-(this.days*86400)),3600);
this.minutes=this.calculateUnit((secDiff-(this.years*(86400*365))-(this.days*86400)-(this.hours*3600)),60);
this.seconds=this.calculateUnit((secDiff-(this.years*(86400*365))-(this.days*86400)-(this.hours*3600)-(this.minutes*60)),1);
Möchte ich, um die datetime in der Woche, aber wenn der DST ist dann die Termine ab 1 Stunde. Ich weiß nicht, wie um zu prüfen, ob die Sommerzeit verwendet wird oder nicht.
Wie kann ich wissen, Wann die Sommerzeit beginnt und endet?
InformationsquelleAutor der Frage Jo Smo | 2012-08-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser code verwendet die Tatsache, dass
getTimezoneOffset
gibt eine größer Wert während der Normalzeit vs. der Sommerzeit (DST). So bestimmt die erwartete Ausgabe während der üblichen Zeit, und es vergleicht, ob die Ausgabe von dem angegebenen Datum die gleichen (Standard) oder weniger (DST).Beachten Sie, dass
getTimezoneOffset
gibt positive Anzahl von Minuten für die Zonen west von UTC, die in der Regel als angegeben negative Stunden (da Sie "hinter" UTC). Zum Beispiel, Los Angeles ist UTC–8h Standard, UTC-7h DST.getTimezoneOffset
zurück480
(positive 480 Minuten) im Dezember (winter, Standard-Zeit), anstatt-480
. Es gibt negative zahlen für die östlichen Hemisphäre (Z-600
für Sydney im winter, obwohl dies "vorwärts" (UTC+10h).InformationsquelleAutor der Antwort Sheldon Griffin
Erstellen Sie zwei Termine: eine im Juni, eine im Januar. Vergleichen Sie die getTimezoneOffset () - Werte.
Überprüfen Sie jetzt getTimezoneOffset() das aktuelle Datum.
InformationsquelleAutor der Antwort Jon Nylander
War ich konfrontiert mit diesem problem heute, aber da unsere Sommerzeit beginnt und Stoppt an unterschiedlichen Zeiten aus den USA (zumindest nach meinem Verständnis), habe ich eine etwas andere route..
Dann vergleichen Sie einfach die aktuelle Zeitzone offset mit DST und nonDST, um zu sehen, welche Spiele.
InformationsquelleAutor der Antwort Aaron Cole
Basierend auf Matt Johanson ' s Kommentar auf die Lösung von Sheldon Griffin habe ich den folgenden code:
Er versucht, das beste aus allen Welten unter Berücksichtigung aller Kommentare und bisher vorgeschlagenen Antworten und speziell:
1) speichert das Ergebnis für pro Jahr stdTimezoneOffset, so dass Sie nicht brauchen, um neu zu berechnen, wenn die Prüfung mehrere Termine im selben Jahr.
2) Es wird nicht davon ausgegangen, dass DST (wenn es überhaupt existiert) ist unbedingt im Juli,
und funktioniert sogar, wenn es irgendwann und manche Ort werden jeden Monat.
Aber leistungsmäßig wird es schneller arbeiten, wenn in der Tat Juli (oder in der Nähe von Monaten) sind in der Tat DST.
3) Worst-case vergleicht er die getTimezoneOffset der ersten eines jeden Monats. [und etwas zu tun, Einmal pro Jahr getestet].
Die Annahme, es immer noch macht ist, dass wenn es Sommerzeit ist, die größer als einen Monat.
Wenn jemand abnehmen will, die Annahme kann er ändern-Schleife in etwas mehr wie was in der solutin zur Verfügung gestellt von Aaron Cole - aber ich würde trotzdem springen einem halben Jahr vor und brechen aus der Schleife heraus, wenn zwei verschiedene offsets gefunden werden]
InformationsquelleAutor der Antwort epeleg
Diese Antwort ist sehr ähnlich zu der Antwort akzeptiert, aber nicht überschreiben die
Date
Prototyp, und verwendet nur eine Funktion aufrufen, um zu überprüfen, ob die Sommerzeit in Kraft ist, anstatt zwei.Die Idee ist, dass, da kein Land beobachtet DST dauert 7 Monate[1] in einem Bereich, der beobachtet DST offset von UTC-Zeit im Januar wird im Unterschied zu dem im Juli.
Während der Sommerzeit verschiebt Uhren leitetJavaScript gibt immer einen größer Wert während Standard Time. Daher, immer den minimalen Abstand zwischen Januar und Juli erhalten die Zeitzone offset während der Sommerzeit.
Dann überprüfen wir, ob die Daten Zeitzone ist gleich dem minimalen Wert. Wenn es so ist, dann sind wir in die Sommerzeit; sonst sind wir nicht.
Die folgende Funktion verwendet diesen Algorithmus. Es dauert ein date-Objekt,
d
und zurücktrue
wenn die Sommerzeit in Kraft ist, die für das Datum und diefalse
wenn dem nicht so ist:InformationsquelleAutor der Antwort Toastrackenigma
Den moment.js Bibliothek bietet eine
.isDst()
Methode auf seine Zeit-Objekte.InformationsquelleAutor der Antwort Daniel F
Ihrer Nähe sind, aber ein wenig aus. Sie müssen nie für die Berechnung Ihrer eigenen Zeit, wie es aufgrund Ihrer eigenen Uhr. Er kann erkennen, wenn Sie die Sommerzeit in Ihrer Lage, aber nicht für einen remote-Standort produziert von der Einpresstiefe:
Wird dies immer noch falsch und aus einer Stunde, wenn Sie sind in der Sommerzeit. Brauchen Sie für einen remote-Zeit-Konto, wenn Sie derzeit in Ihrem DST oder nicht und entsprechend anzupassen. versuchen Sie, die Berechnung und ändern Sie die Uhr, um - sagen wir 2/1/2015 und stellen Sie die Uhr eine Stunde zurück, als ob außerhalb der Sommerzeit. Berechnen Sie dann für ein offset für einen Ort, der sollte noch 2 Stunden hinter sich. Es wird sich zeigen, eine Stunde vor dem zwei-Stunden-Fenster. Sie würden noch brauchen, um für die Stunde und anpassen. Ich habe es nach New York und Denver und gehen immer die falschen (hour ahead) in Denver.
InformationsquelleAutor der Antwort Larry Enzer
Habe ich gefunden, dass die Verwendung der Moment.js Bibliothek mit einige der Konzepte, die hier beschrieben werden (Vergleich Januar bis Juni) sehr gut funktioniert.
Diese einfache Funktion gibt an, ob die Zeitzone des Benutzers beobachtet Sommerzeit:
Einen einfachen Weg, um zu überprüfen, dass diese funktioniert (auf Windows) ist die änderung der Zeitzone auf eine nicht-DST-zone, zum Beispiel Arizona false zurück, wohingegen die EST oder PST-Datei wird true zurückgegeben.
InformationsquelleAutor der Antwort Nico Westerdale
Den
getTimezoneOffset()
Methode in JavaScript im browser, gibt die Anzahl der Minuten offset von 00:00 Zeitzone. Zum Beispiel, America/New_York Zeitzone Sommerzeit (DST) gibt die Zahl 300. 300 Minuten-5 Stunden-Differenz von null. 300 Minuten geteilt durch 60 Minuten 5 Stunden. Jeder Zeitzone ist im Vergleich zu der null-Zeitzone +00:00 /Etc/GMT /Greenwich-Zeit).MDN Web-Docs
Die nächste Sache, die Sie wissen müssen, ist, dass die offset-hat das entgegengesetzte Vorzeichen der tatsächlichen Zeitzone.
Informationen über Zeitzonen wird verwaltet von der Internet Assigned Numbers Authority (iana)
iana Zeitzonen
Einer schön formatierten Tabelle der Zeitzonen erfolgt durch joda.org
joda-time-Zeit-Zonen
+00:00 Etc/GMT ist Greenwich Zeit
Alle Zeitzonen-offset von +00:00 /"Etc/GMT" /Greenwich-Zeit
Sommerzeit ist immer eine frühere Zeit als die "normale" Zeit im Sommer. Legen Sie Ihre Uhren im Herbst wieder Saison. ("Fall-Back" - slogan zu erinnern, was zu tun ist)
So, America/New_York Zeit in der die Zeitumstellung (winter) ist eine Stunde vor der regulären Zeit. So, zum Beispiel, was normalerweise 5 Uhr nachmittags in New York city im Sommer, ist jetzt 4 Uhr Amerika/New_York Zeit in die Sommerzeit. Der name "Amerika/New_York" Zeit ist ein "Long-Format" time zone name. Die Ostküste der U. S in der Regel ruft Ihre Zeitzone Eastern Standard Time (EST)
Wenn Sie wollen, vergleichen die heutige Zeit-zone-offset der Zeitzonen-offset, einige andere Datum, müssen Sie wissen, dass mathematische Zeichen (+/- "Positiv /Negativ") die Zeitzonen-offset, ist das Gegenteil von der Zeitzone.
Blick auf die Zeitzone-Tabelle an joda.org und finden Sie die Zeitzone "Amerika/New_York" Es wird ein negatives Vorzeichen vor dem Standard-Offset.
Dreht sich die Erde entgegen dem Uhrzeigersinn auf die Achse. Eine person, die den Sonnenaufgang in Greenwich sieht den Sonnenaufgang zu 5 Stunden, bevor Sie jemanden in New York City, den Sonnenaufgang sehen. Und jemand der Westküste der USA sehen, den Sonnenaufgang, nachdem jemand an der Ostküste der USA sieht den Sonnenaufgang.
Es gibt einen Grund, warum Sie brauchen, um wissen. So, dass Sie werde in der Lage sein, um logisch festzustellen, ob JavaScript-code ist immer der DST-status korrekt ist oder nicht, ohne zu testen, jedes mal, wenn zone zu unterschiedlichen Zeiten des Jahres.
Vorstellen, dass es November in New York City, und die Uhren wurden wieder eine Stunde. Im Sommer in New York City, ist der offset 240 Minuten oder 4 Stunden.
Können Sie testen, indem ein Datum im Juli, und dann immer den offset.
Was gedruckt wird, um die browser-Entwickler-tools console-log?
Antwort ist: 240
So, jetzt können Sie ein Datum im Januar und sehen, was Ihr browser gibt für eine Zeitzonen-offset für die winter-Saison.
Antwort ist: 300
Offensichtlich 300 größer ist als 240. Also, was bedeutet das? Sollten Sie code schreiben, dass die tests für die winter-offset, größer als die Sommer-offset? Oder die Sommer-offset weniger als der winter ausgeglichen? Wenn es einen Unterschied gibt zwischen Sommer und winter, Zeitzone offsets, dann können Sie davon ausgehen, dass die Sommerzeit für die Zeitzone. Aber das hilft dir nicht sagen, ob heute nutzt die Sommerzeit für die Browser Zeitzone. So, Sie brauchen, um die Zeitzonen-offset für heute.
Antwort ist: ? - Abhängig von der Zeit des Jahres
Wenn die heutigen Zeitzonen-offset und Sommerzeit-zone-offset ist der gleiche, UND Sommer und winter Zeitzone offsets anders sind, dann durch logische Deduktion, heute muss es sein, NICHT in die Sommerzeit.
Können Sie weglassen, Vergleich der Sommer-und winter-time zone offsets, (um Zu wissen, ob die Sommerzeit verwendet wird für diese zone) und vergleichen Sie die heutigen Zeitzonen-offset, um die Sommer-TZ-offset, und immer die richtige Antwort?
Gut, ist heute in der winter oder der Sommer? Wenn Sie wüssten, dass dann könnten Sie für die folgende Logik:
Aber das problem ist, dass Sie nicht wissen, ob das heutige Datum ist im winter oder Sommer. Jede Zeitzone kann seine eigenen Regeln für, wenn die Sommerzeit beginnt und Stoppt. Sie würde auf der Spur bleiben müssen jeder Zeitzone der Regeln für jede Zeitzone, in der Welt. Also, wenn es einen besseren und einfacheren Weg, dann könnte man genauso gut tun es umso besser und einfacher Weg.
Was uns bleibt, ist, dass Sie brauchen, um zu wissen, ob diese Zeitzone verwendet Sommerzeit, und dann vergleichen die heutige Zeitzonen-offset mit der Sommerzeit-zone-offset. Das wird Ihnen immer eine zuverlässige Antwort.
Finale Logik ist:
Funktion, um zu bestimmen, wenn die Zeitzone, in der browser verwendet, DST:
InformationsquelleAutor der Antwort Sandy Good