2014-11-16 2 views
0

У меня есть date_object.time(), это Asia/Taipei времяpython конвертировать время в utc время?

date_object.time() = '10:00:00' 

И я получаю datetime.datetime.now с часовым поясом Asia/Taipei

current = datetime.datetime.now(pytz.utc) 
taipeitime = current.replace(tzinfo=pytz.utc).astimezone(pytz.timezone('Asia/Taipei')) 

А потом объединить date_object.time() и taipeitime

combine = datetime.datetime.combine(taipeitime, date_object.time()) #Asia/Taipei time 

И у меня есть для преобразования combine времени UTC Но я получаю сообщение об ошибке:

print combine.astimezone(pytz.utc) 
ValueError: astimezone() cannot be applied to a naive datetime 

Пожалуйста, научи меня, как преобразовать это? Спасибо

ответ

0

Метод .time() для DateTime теряет данные часового пояса, используйте .timetz() вместо того, чтобы, например:

>> combine = datetime.datetime.combine(taipeitime, taipeitime.timetz()) 
>> combine.astimezone(pytz.utc) 

datetime.datetime(2014, 11, 16, 15, 13, 46, 948201, tzinfo=<UTC>) 

против

>> combine = datetime.datetime.combine(taipeitime, taipeitime.time()) 
>> combine.astimezone(pytz.utc) 

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
ValueError: astimezone() cannot be applied to a naive datetime 

см https://docs.python.org/2/library/datetime.html#datetime.datetime.timetz.

Также вы можете заменить часовой пояс на объект времени, например.

combine = datetime.datetime.combine(taipeitime, 
        taipeitime.time().replace(tzinfo=pytz.timezone('Asia/Taipei'))) 

предоставит вам информацию о времени и времени. См. https://docs.python.org/2/library/datetime.html#datetime.time.replace

Смежные вопросы