我的函数将 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()))
最后一个打印语句的预期输出是2019-06-30 20:00:00-04:00但程序返回2019-06-30 14:30:00-04:00。仅当我将 'utcoffset' 函数的 'timedelta' 中的值设置为 时,它才会显示预期结果timedelta(hours=1, minutes=30)
。
请注意,我只想使用“日期时间”库来实现这一点。