2014-12-27 2 views
0

Я пытаюсь сделать функцию, называемую to_timezone, что займет имя часового пояса в виде строки, а затем преобразует 'starter' в этот часовой пояс, используя часовые пояса pytz ... Я хочу, чтобы это для возврата aa нового datetime.Создание функции с часовыми поясами PYTZ

Я хочу, чтобы это был какой-то часовой пояс, который входит как «tz». Я не хочу жестко закодировать объект «pytz timezone» Как бы это сделать?
Вот мой код:

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 

ответ

0

Если tz этого имя часового пояса из базы данных TZ, такие как "America/New_York" то вы могли бы передать его непосредственно pytz.timezone и использовать astimezone(), normalize() методы для преобразования осознаваемого объекта DATETIME 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 
0

Я не уверен, если я вас правильно понимаю, но вы можете просто передать все, что приходит как tz к pytz.timezone:

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

Таким образом, можно, например, позвоните по телефону to_timezone('Europe/London').