我正在尝试制作一个名为to_timezone的函数将时区名称作为字符串,然后转换"starter"到那个时区,使用Pytz的时区...我希望它返回一个新的日期时间。
我希望它是作为"tz"输入的任何时区。我不想对"pytz 时区对象"进行硬编码我将如何实现这一点?
这是我的代码:
import datetime
import pytz
starter = pytz.utc.localize(datetime.datetime(2015, 10, 21, 23, 29))
def to_timezone(tz):
tz_utc = pytz.timezone('#pytz timezone object')
starter = tz_utc.astimezone
return starter
如果tz
是tz数据库中的时区名称,例如"America/New_York"
那么您可以将其直接传递给pytz.timezone
并使用astimezone()
,normalize()
方法将感知的日期时间对象starter
转换为tz
时区:
def to_timezone(aware_dt, zonename):
tz = pytz.timezone(zonename)
return tz.normalize(aware_dt.astimezone(tz))
例:
starter = datetime.datetime(2015, 10, 21, 23, 29, tzinfo=pytz.utc)
print(to_timezone(starter, "America/Los_Angeles"))
# -> 2015-10-21 16:29:00-07:00
我不确定我是否正确理解你,但你可以将任何传入的内容作为tz
传递给pytz.timezone
:
def to_timezone(tz):
tz_utc = pytz.timezone(tz)
因此,您可以例如调用to_timezone('Europe/London')
。