Konvertieren Sie die Zeit in UTC vbScript
Habe ich die folgende Funktion, die nicht fein bei der Umwandlung aktuelle Uhrzeit in UTC-Zeit.
Function toUtc(byVal dDate)
Dim oShell : Set oShell = CreateObject("WScript.Shell")
toUtc = dateadd("n", oShell.RegRead("HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation\ActiveTimeBias"), cDate(dDate))
End Function
Aber ich denke, dass diese nicht angemessen handhaben Umwandlung von zukünftigen oder historischen Daten zu UTC, da wäre die Funktion benötigen Sie den offset von der server-Zeitzone auf die Zeit von dem Datum, das konvertiert wird, und ob oder nicht es war während der Sommerzeit oder nicht.
Wie kann ich dies umgehen?
Bin ich mit vbScript/Classic ASP auf windows server mit IIS7.5
Klären, das hat nichts zu tun mit der Formatierung des Datums. Es ist alles über die Umwandlung von UTC aus der server-Zeitzone für die historischen Daten. Während der Sommerzeit und dem offset wird deaktiviert um 60 Minuten, wenn ich versuche, Sie zu konvertieren, ein datetime-aufgetreten in standard time.
Beispiel:
Können sagen, dass heute 2013-02-19 (nicht Tageslicht-Spar-Zeit), möchte ich verdeckte einen timestamp aus aus sagen, 2008-06-05 (während der Sommerzeit-Periode) von PDT (meine server-Zeitzone) auf UTC. mit der Methode in meiner Funktion mir einen Wert, der 60 Minuten Weg vom richtigen Wert (weil die AKTUELLE Zeit (PST, nicht PDT), der offset falsch sein, für das historische Datum).
In anderen Worten, die Zeitzone offset des Eingangs-Datum sein könnte, UTC-7 und UTC-8, je nachdem, ob oder nicht Sommerzeit wurde beobachtet, dass insbesondere auf die Datum. Ich brauche zu berechnen, die richtige UTC-Datum und für die Eingabe der Datums-und ich brauche den code, um zu arbeiten, ob oder nicht die Sommerzeit beobachtet wird, auf das aktuelle Datum ein.
Danke @AardVark71, ich handn nicht gedacht, dass die option. Ich werde tun, einige unit-tests auf, und sehen, wie es herauskommt, und lassen Sie wissen, wie es sich herausstellt.
Funktioniert wie ein Charme. Ich werde meine endgültige Lösung in ein paar.
InformationsquelleAutor GWR | 2013-02-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist die Lösung, die ich landete Durchführung auf Anregung von @AardVark71.
Lege ich diese in mein func.asp-Datei:
Gibt es ein timestamp-Wert. Dann von überall in der klassischen asp-code, ich kann dies tun:
Diese (glaube ich) ist einfach, und es produziert den erwarteten Werten und vollständig Faktoren in der Sommerzeit.
Das funktioniert nicht nach ISO8601 Termine. Führen Sie auf dem server, new Date("2015-08-27T12:28:51") return NaN Ausführen in der client-do Aug 27 2015 11:58:16 GMT+0200 wollte ich zum konvertieren von UTC in die lokale Zeit.
Neland - Das ist eine triviale Datum-format-Problem und nicht ein problem mit der Funktion oben.
InformationsquelleAutor GWR
In ASP-classic, die Sie mischen können VBScript-und JScript-code innerhalb einer Seite. Die JScript -
Date
Objekt verwendet werden könnte für die lokalen ⇄ UTC-Datum und-Konvertierung. Komplettes Beispiel:Erwartete Ergebnis:
Und die Ausgabe bei der Ausführung auf einem server mittels PST/PDT Zeit:
Funktioniert perfekt, und vermeidet die Notwendigkeit der Verwendung von Server.CreateObject("WbemScripting.SWbemDateTime"). Darüber hinaus ist es elegant, dass es ermöglicht jScript-code direkt in die Seite.
InformationsquelleAutor Salman A
Wenn ich nicht etwas vermissen, das Sie benötigen, um die lokale Zeit auf der remote-Maschine und time-zone-offset, richtig?
Hier Sehe ich selbst-Antwort auf
WMI Win32_TimeZone Bias
Eigenschaft. Aber laut diesem MSDN-Beispiel: "Konvertierung von Ortszeit in UTC-Zeit", Zitat:So, nächsten Beispiel wird die Funktion get current date time, und ich überlasse es Ihnen, es zu ändern, für konkretes Datum Zeit Messen.
[EDIT] Naja, sieht aus wie nicht Vertrauen sollte auf der MSDN-Website (oder vielleicht arbeiten diese nur für die aktuelle Zeit). Allerdings sehe ich es nicht die Antwort, die Sie suchen. Wenn Sie nicht finden bessere Idee hat, können Sie den Vorgang automatisieren,online-Rechner.
P. S. Ok, Streik oben genannten code und können versuchen, einen anderen "iteration".
Nur der Hinweis, dass ich einen code kompatibel mit meinem Zeitzone (Bulgarien), wo PDT start am letzten Sonntag im März und endet am letzten Sonntag Oktober. Dies erlaubt mir, einfach mein PDT-Bereich. Kurz, die Idee ist, stellen Sie den Algorithmus für Ihre region. Der rest ist klar, hoffe ich.
Warten Sie einen min, warum Sie mit der AKTUELLEN Zeit? Ich dachte man kann Fleisch aus der Idee von meinem Bein und beenden Sie den rest, oder Sie benötigen weitere Hilfe?
Was ich meany von "aktuell" ist, dass Sie Ihre wmi-Abfrage gibt den offset an der Zeit, die Sie anfordern, die anders sein könnte, als der Versatz an der datetime-Sie versuchen zu konvertieren.
Ok, ich sehe, kann die schlechte ist, dass ich Vertrauen zu sehr auf MS 🙂
Antwort aktualisiert. Lassen Sie mich wissen, lohnt es sich.
InformationsquelleAutor Panayot Karabakalov