göra Excel kunna konvertera tidszoner

För några månader sedan på jobbet hade jag behov av att göra Excel kunna stödja konvertera ett datum och tid till en annan tidszon. Så jag gjorde lite Googling och fann att det vanligaste svaret var att lägga till / subtrahera timmar. Denna typ av verk om de två regionerna inte använder sommartid men jag kunde inte garantera att.

sedan finns det några referenser till att kunna konvertera från lokal tid till UTC med kernel32.DLL. Bra om de är de två zoner som du vill arbeta med, eller bra om allt uttrycks som förskjutningar från UTC.

ingen av dessa passade mitt användningsfall. Efter att ha exponering för de underbara biblioteken i saker som Java, PHP och Python ville jag kunna ta en datumtid och veta vilken tidszon den är i konvertera den till någon annan tidszon. Jag ville att sommartid skulle beaktas. Är det för mycket begärt?

så jag tänkte, tänk om du kunde köra Python i Excel. Detta problem skulle lösas enkelt. Tja lite snabb Googling och jag hittade xl-wings (https://www.xlwings.org/). Som tur skulle ha det denna lilla skönhet fungerar som annonseras. Du kan verkligen köra Python från Excel. Holy cow, det här är fantastiskt. Inte bara att det fungerar i Excel 2003 som var den version jag fastnade med vid den tiden. Bonuspoäng för att arbeta i en miljö som inte uttryckligen anges som stöds.

så jag följde installationsanvisningarna. Allt gick som dokumenterat trots att jag var i Excel 2003 (dark ages jag vet). Provansökan fungerade som en behandling. Så då blev det en övning i Python-programmering. Här är Python som jag slutade 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å om du någonsin är i en bindning och kräver förmågan att konvertera mellan tidszoner i Excel som jag gjorde. Kanske ge xl-wings och Python ett skott.

Lämna ett svar

Din e-postadress kommer inte publiceras.