使用PYTZ的时区​​创建一个函数

时间:2014-12-27 11:31:33

标签: python python-3.x timezone pytz

我试图创建一个名为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

2 个答案:

答案 0 :(得分:0)

我不确定我是否理解正确,但您可以将tz中的任何内容传递给pytz.timezone

def to_timezone(tz):
    tz_utc = pytz.timezone(tz)

所以你可以打电话给to_timezone('Europe/London')

答案 1 :(得分:0)

如果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