Excel in die Lage versetzen, Zeitzonen zu konvertieren

Vor einigen Monaten musste ich bei der Arbeit Excel in die Lage versetzen, die Konvertierung von Datum und Uhrzeit in eine andere Zeitzone zu unterstützen. Also habe ich etwas gegoogelt und festgestellt, dass die häufigste Antwort darin bestand, Stunden zu addieren / subtrahieren. Diese Art von funktioniert, wenn die beiden Regionen keine Sommerzeit verwenden, aber ich konnte das nicht garantieren.

Dann gibt es einige Hinweise darauf, mit kernel32 von der Ortszeit in UTC konvertieren zu können.dll. Großartig, wenn es sich um die beiden Zonen handelt, mit denen Sie arbeiten möchten, oder großartig, wenn alles als Offsets von UTC ausgedrückt wird.

Keiner von beiden passte zu meinem Anwendungsfall. Nachdem ich die wunderbaren Bibliotheken in Dingen wie Java, PHP und Python kennengelernt hatte, wollte ich in der Lage sein, ein Datum zu nehmen und zu wissen, in welcher Zeitzone es sich befindet, um es in eine andere Zeitzone umzuwandeln. Ich wollte, dass die Sommerzeit berücksichtigt wird. Ist das zu viel verlangt?

Also dachte ich, was wäre, wenn Sie Python in Excel ausführen könnten. Dieses Problem wäre leicht zu lösen. Nun, ein bisschen Googeln und ich habe xl-wings gefunden (https://www.xlwings.org/). Wie es der Zufall wollte, funktioniert diese kleine Schönheit wie beworben. Sie können Python tatsächlich von Excel aus ausführen. Heilige Kuh, das ist großartig. Nicht nur, dass es in Excel 2003 funktioniert, das war die Version, die ich zu der Zeit verwendet habe. Bonuspunkte für das Arbeiten in einer Umgebung, die nicht explizit als unterstützt aufgeführt ist.

Also habe ich die Installationsanweisungen befolgt. Es lief alles wie dokumentiert, obwohl ich in Excel 2003 war (dunkle Zeitalter, die ich kenne). Die Beispielanwendung funktionierte wie ein Leckerbissen. Dann wurde es eine Übung in Python-Programmierung. Hier ist die Python, mit der ich gelandet bin.

from datetime import datetime as dt
from dateutil import tz

import xlwings as xw

@xw.func
def convtz(origDate, fromTZName, toTZName):
from_zone = tz.gettz(fromTZName)
to_zone = tz.gettz(toTZName)
tempDate = origDate.replace(tzinfo=from_zone)
return tempDate.astimezone(to_zone)

In Excel you can then use a function such as

convtz(‘7/25/2017 05:59:03 AM’, ‘Europe/Istanbul’, ‘Australia/Melbourne’)

Also, wenn Sie jemals in einer Bindung sind und die Fähigkeit benötigen, zwischen Zeitzonen in Excel zu konvertieren, wie ich es getan habe. Vielleicht geben xl-Wings und Python einen Schuss.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.