私の関数は UTC 日時文字列をパラメーターとして取り、それを日時オブジェクトに変換します。これを EST(GMT -4:00) にオフセットする必要があります。たとえば、「<em>2019-07-01T00:00:00Z」を関数に渡すと、「<em>06/30/2019 08:00:00」が返されます。
' tzinfo 'のサブクラスとその標準メソッドをどのように実装したかを次に示します。
from datetime import datetime, tzinfo, timedelta
class EST(tzinfo):
def tzname(self, dt):
return "US/Eastern"
def utcoffset(self, dt):
return timedelta(hours=-4) + self.dst(dt)
def dst(self, dt):
return timedelta(0)
TEST_UTC = "2019-07-01T00:00:00Z"
dt_object = datetime.strptime(TEST_UTC, "%Y-%m-%dT%H:%M:%SZ") # String to datetime object -> 2019-07-01 00:00:00
print(dt_object.astimezone(EST()))
最後の print ステートメントの予想される出力は2019-06-30 20:00:00-04:00ですが、プログラムは2019-06-30 14:30:00-04:00を返します。「utcoffset」関数の「timedelta」の値を に設定した場合にのみ、期待される結果が表示されますtimedelta(hours=1, minutes=30)
。
「datetime」ライブラリのみを使用してこれを実装したいことに注意してください。