Wie konvertiert EST/EDT zu GMT?
Habe ich ein paar Einträge in einer Spalte darstellen, die entweder EST oder EDT Zeit. Ich konvertieren müssen diese Zeiten auf GMT-Zeit. Das format der Zeit:
10/1/2010 0:0:0
10/1/2010 0:6:0
...
10/1/2010 23:54:0
...
10/3/2010 0:0:0
...
Kann mir jemand helfen hier? Dank
- Diese sehen aus wie Termine (1. Tag des Oktober, 2010), nicht mal ... bitte erklären.
- bitte sehen Sie die änderungen
- Warum tun Sie immer wieder die gleiche Frage? Was war falsch mit Ihrem vorherigen Versuch? stackoverflow.com/questions/5490141/... und stackoverflow.com/questions/5464410/.... Vielleicht wäre es einfacher, wenn Sie könnten Fragen Sie Ihren echte Frage statt dieser andere, falsche Fragen, die Sie immer wieder ändern.
- in diesem zweiten posting habe ich versucht zu konvertieren, die Zeit auf GMT-Zeit manuell ein, die entpuppt sich unefficient. Für das erste posting, ich war simplily denken, dass die Menschen beenden Sie die Anzeige, die post. Gedanken über das löschen von den ersten ein, konnte aber nicht musste, weil er die Antworten bereits
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die einfachste, zuverlässigste Weg, ich weiß Konvertierung zwischen Zeitzonen zu verwenden, die Drittanbieter- pytz Modul:
ergibt:
Beachten Sie jedoch, dass Ihre Daten nicht angeben, wenn das datetime-ist in der EST oder EDT Zeitzone.
Es gibt einige Male, die mehrdeutig sind, wenn Sie nicht angeben, welche EST oder EDT. Für Beispiel, '10/27/2002 1:30:00' wäre zweideutig:
seit dieser Zeit geschah zweimal durch die Sommerzeit.
Auch einige datetimes, wie 2002-04-07 02:30:00,
sind nicht existent. Sehen dieser link
für eine Diskussion dieser und noch mehr bizarre Probleme, die entstehen, wenn der Umgang mit localtimes.
Wenn Sie bereit sind, zu übersehen, diese knorrig Ecke Fällen, und wenn Sie Ihre Maschine einrichten, in der lokalen Zeitzone (z.B. EST/EDT),
es ist ein Weg, um die Konvertierung zwischen lokaler und UTC-Zeitzonen, die nicht
nicht erfordern die installation von
pytz
. Die Idee ist, konvertieren Sie die datetime --> timetuple --> timestamp --> UTC datetime. Die Kette der Umwandlungen erfolgt mitBeispiel:
Erträge
Den letzten zwei Terminen getestet oben zeigen die Konvertierung funktioniert einwandfrei, auch mit Zeiten in der Nähe der Schalter zwischen EST und Hrsg.
In der Zusammenfassung, mit der alternativen Methode (ohne pytz), hier ist, wie die Konvertierung von datetime-Objekte repräsentieren lokale Zeit in datetime-Objekte repräsentieren GMT
Zeit, und Umgekehrt:
datetime
Objekte mit derstrftime
Methode. Zum Beispieldate.strftime('%m/%d/%Y%l:%M:%S')
zurückkehren würde'12/01/2010 5:00:00'
. Es gibt kein eingebautes format für einstellige Minuten und Sekunden jedoch. Sie konnte finagle, dass mit mehr code, aber es ist hässlich. Tun Sie wirklich, wirklich wollen und brauchen, dass?Pseudocode für jeden Datensatz:
machen Sie eine timestamp-string: Feld[0].strip() + "" + Feld[1].strip()
datetime verwenden.datetime.strptime() zum umwandeln in ein datetime-Wert ist.datetime-Instanz
fügen Sie ein timedelta z.B. timedelta(hours=-4) auf Ihrer Zeitstempel
verwenden timestamp.strftime() zu produzieren, was die string-Repräsentation für die Ausgabe.
Für den Fall, wo das Feld leer ist: Wenn das bedeutet, dass 0:0:0, ändern Sie die oben, um zu passen. Wenn es heißt "Zeit unbekannt", Sie müssen etwas tun, sonst ...
Ohne eine zugehörige Uhrzeit, die Zeitzone ist egal ... noch kann das Datum übersetzt werden in eine andere Zeitzone. Gibt es einen Bezug in einer anderen Spalte?
EDIT: Okay, jetzt, dass es eine Zeit, lasse ich die python-guru übernehmen. ;]
Ich hatte zum erstellen einer benutzerdefinierten Funktion in Python zu konvertieren EST zu GMT, hier ist der code, den ich geschrieben habe:
Ich habe nicht Hinzugefügt Unterstützung für EDT. Es ist Februar und EST derzeit verfolgt. Etwaige änderungen oder Korrekturen sind willkommen!
Davon ausgehen, dass wir eine datetime-Zeichenfolge als "2019-04-09T23:59:55ET" in US/Eastern time.
Hier ist die Funktion zum konvertieren von string zu UTC: