2016-12-27 2 views
0

Я пытаюсь преобразовать отметку времени UNIX в UTC + 9. Я искал в течение нескольких часов, и все это очень сбивает с толку, что с различными библиотеками и т.д.Простой способ конвертировать UTC в другой часовой пояс в python

Вот что у меня до сих пор

from datetime import datetime 
from pytz import timezone 
import datetime 

time = 1481079600 
utc_time = datetime.datetime.fromtimestamp(time)#.strftime('%Y-%m-%d %H:%M:%S') 
print utc_time.strftime(fmt) 

tz = timezone('Japan') 
print tz.localize(utc_time).strftime(fmt) 

Это просто печатает то же самое время, что я делаю неправильно

+0

Смотрите ответы здесь больше прозрений: https://stackoverflow.com/questions/4770297/python-convert-utc-datetime-string-to-local-datetime/46339491#46339491 – Shule

ответ

0

я собираюсь бесстыдно подключить эту новую библиотеку datetime Я одержим маятником.

pip install pendulum 

import pendulum 

t = 1481079600 

pendulum.from_timestamp(t).to_datetime_string() 
>>> '2016-12-07 03:00:00' 

И теперь, чтобы изменить его на ваш часовой пояс, быстро и просто!

pendulum.from_timestamp(t, 'Asia/Tokyo').to_datetime_string() 
>>> '2016-12-07 12:00:00' 
+0

2 строки кода отлично, мне нужно улучшить мой google foo, я не смог найти простое решение в любом месте –

+0

Это относительно новая библиотека, но это потрясающе, и я предпочитаю ее родной Python. Вот документация для всех интересных вещей, которые он может сделать. https://pendulum.eustace.io/docs/ –

0

Ваш utc_time datetime наивный - у него нет связанного с ним часового пояса. localize присваивает ему часовой пояс, он не конвертирует между часовыми поясами. Самый простой способ сделать это, вероятно, построить часовой пояс-Aware DateTime:

import pytz 
utc_time = datetime.datetime.fromtimestamp(time, pytz.utc) 

Затем преобразовать в часовом поясе вы хотите, когда вы будете готовы, чтобы отобразить его:

print utc_time.astimezone(tz).strftime(fmt) 
+0

где 'TZ' откуда? –

+1

Ну, в этом примере это происходит от 'tz = часовой пояс ('Japan')' в вопросе. Вы, конечно, должны знать, в какой часовой пояс вы хотите локализовать. –

+0

ohyes, конечно. Благодаря! –

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