excelがタイムゾーンを変換できるようにする

数ヶ月前の職場で、Excelが日付と時刻を別のタイムゾーンに変換できるようにする必要がありました。 だから私はいくつかのグーグルをして、最も一般的な答えは時間を加算/減算することだったことがわかりました。 この種の機能は、2つの地域が夏時間を使用しない場合ですが、それを保証することはできませんでした。次に、kernel32を使用して現地時間からUTCに変換できることへのいくつかの参照があります。dll。 それらがあなたが作業したい2つのゾーンである場合は素晴らしい、またはすべてがUTCからのオフセットとして表現されている場合は素晴らしい。これらのどちらも私のユースケースには適していません。

Java、PHP、Pythonのような素晴らしいライブラリに触れた後、私は日付の時間を取ることができ、それがどのタイムゾーンに変換されているかを知ることがで 私は夏時間を考慮に入れたかったのです。 それは尋ねるにはあまりにも多くですか?だから私は、ExcelでPythonを実行できるとしたらどうでしょうか。 この問題は簡単に解決されます。 まあ、いくつかの簡単なグーグルと私はxl-wings(https://www.xlwings.org/)を見つけました。 運がそれを持っているように、この小さな美しさは宣伝されています。 実際にExcelからPythonを実行できます。 ホーリーカウ、これは素晴らしいです。 それは私がその時に使用していたバージョンだったExcel2003で動作するだけではありません。 サポートされていると明示的に記載されていない環境で作業するためのボーナスポイント。だから私はインストールの指示に従いました。

私がExcel2003(私が知っている暗黒時代)にいたにもかかわらず、それはすべて文書化されたように行きました。 サンプルアプリケーションは、御馳走のように働きました。 だから、それはPythonプログラミングの練習になりました。 ここに私が終わったPythonがあります。

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:03AM’,’Europe/Istanbul’,’Australia/Melbourne’)

あなたがバインドしていて、私がしたようにExcelでタイムゾーン間で変換する機能が必要な場合。 たぶんxl-wingsとPythonに打撃を与えてください。

コメントを残す

メールアドレスが公開されることはありません。