Å Gjøre Excel i Stand til å konvertere tidssoner

For noen måneder siden på jobb hadde jeg behov for Å Gjøre Excel i stand til å støtte konvertering av dato og klokkeslett til en annen tidssone. Så jeg gjorde Litt Googling og fant det vanligste svaret var å legge til / trekke fra timer. Denne typen fungerer hvis de to regionene ikke bruker sommertid, men jeg kunne ikke garantere det.

da er det noen referanser til å kunne konvertere fra lokal tid til UTC ved hjelp av kernel32.DLL. Flott hvis de er de to sonene du vil jobbe med, eller flott hvis alt uttrykkes som forskyvninger fra UTC.

Ingen av disse passer min brukstilfelle. Etter å ha eksponering for de fantastiske bibliotekene i Ting som Java, PHP og Python ønsket jeg å kunne ta en dato tid og vite hvilken tidssone den er i konvertere den til en annen tidssone. Jeg ønsket å ta hensyn til sommertid. Er det for mye å be om?

Så jeg tenkte, hva om du kunne kjøre Python I Excel. Dette problemet vil bli løst enkelt. Vel litt rask Googling og jeg fant xl-vinger (https://www.xlwings.org/). Som flaks ville ha det denne lille skjønnheten fungerer som annonsert. Du kan faktisk kjøre Python Fra Excel. Holy cow, dette er fantastisk. Ikke bare at Det fungerer I Excel 2003 som var den versjonen jeg ble sittende fast med på den tiden. Bonuspoeng for arbeid i et miljø som ikke er eksplisitt oppført som støttet.

så jeg fulgte installasjonsinstruksjonene. Alt gikk som dokumentert selv om jeg var I Excel 2003 (dark ages jeg vet). Prøveprogrammet fungerte som en godbit. Så da ble det en øvelse I Python programmering. Her er Python som jeg endte opp med.

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’)

Så hvis du noen gang er i et bind og krever muligheten til å konvertere Mellom Tidssoner i Excel som jeg gjorde. Kanskje gi xl-vinger og Python et skudd.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.