takže Excel schopen převést časová pásma

před několika měsíci v práci jsem měl potřebu, aby Excel schopen podporovat konverzi datum a čas do jiného časového pásma. Takže jsem udělal nějaké Googling a zjistil, že nejčastější odpovědí bylo přidat / odečíst hodiny. Tento druh funguje, pokud dva regiony nepoužívají letní čas, ale nemohl jsem to zaručit.

pak existuje několik odkazů na možnost převodu z místního času na UTC pomocí kernel32.DLL. Skvělé, pokud se jedná o dvě zóny, se kterými byste chtěli pracovat, nebo skvělé, pokud je vše vyjádřeno jako offsety z UTC.

ani jeden z nich nevyhovoval mému případu použití. Po vystavení nádherným knihovnám ve věcech, jako je Java, PHP a Python jsem chtěl mít možnost vzít si čas na rande a vědět, jaké časové pásmo je převést na jiné časové pásmo. Chtěl jsem, aby byl zohledněn letní čas. Je to příliš mnoho na to, abych chtěl?

tak jsem si myslel, co kdybyste mohli spustit Python v aplikaci Excel. Tento problém by byl snadno vyřešen. No nějaké rychlé Googling a našel jsem xl-wings (https://www.xlwings.org/). Jak by to mělo štěstí, tato malá krása funguje tak, jak je inzerována. Python můžete skutečně spustit z aplikace Excel. Svatá krávo, to je úžasné. Nejen, že to funguje v aplikaci Excel 2003, což byla verze, kterou jsem v té době používal. Bonusové body za práci v prostředí, které není výslovně uvedeno jako podporované.

tak jsem postupoval podle pokynů k instalaci. Všechno to šlo tak, jak bylo zdokumentováno, i když jsem byl v Excelu 2003 (temné věky, které znám). Ukázková aplikace fungovala jako lahůdka. Pak se z toho stalo cvičení v programování Pythonu. Tady je Krajta, se kterou jsem skončil.

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

takže pokud jste někdy v bind a vyžadují schopnost převést mezi časovými pásmy v Excelu jako já. Možná dát xl-wings a Python šanci.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.