Дата в UNIX - Python
Формулировка задачи:
Привет. Нужно перевести дату в unix time, но используя средства питона и онлайн калькуляторы, получаю разные ответы.
Но если я забиваю дату 2018-01-01 00:00:00 в какой нибудь онлайн калькулятор unix time выдает 1514764800, а если забить в этот калькулятор время из питона (1514750400.0), выдает Sun, 31 Dec 2017 20:00:00 GMT. Подскажите, пожалуйста, в чем косяк.
Решение задачи: «Дата в UNIX»
textual
Листинг программы
from datetime import timezone,datetime s = "2018-01-01" dt = datetime.strptime(s,'%Y-%m-%d') print(dt) # 2018-01-01 00:00:00 unix1 = dt.timestamp() print(unix1) # 1514754000.0 - это с пересчетом в локальный часовой пояс unix2 = dt.replace(tzinfo=timezone.utc).timestamp() print(unix2) # 1514764800.0 - а это точно по Гринвичу unix3 = (dt - datetime(1970, 1, 1)).total_seconds() print(unix3) # 1514764800.0 - и это точно по Гринвичу print(datetime.fromtimestamp(unix1)) # с учетом локального часового пояса верно: 2018-01-01 00:00:00 print(datetime.fromtimestamp(unix1,tz=timezone.utc)) # если укажем гринвич, то неверно:2017-12-31 21:00:00+00:00 print(datetime.fromtimestamp(unix2)) # по локальному поясу неверно:2018-01-01 03:00:00 print(datetime.fromtimestamp(unix2,tz=timezone.utc)) # если укажем гринвич, то верно: 2018-01-01 00:00:00+00:00 print(datetime.fromtimestamp(unix3)) # по локальному поясу неверно:2018-01-01 03:00:00 print(datetime.fromtimestamp(unix3,tz=timezone.utc)) # если укажем гринвич, то верно: 2018-01-01 00:00:00+00:00 print(datetime.utcfromtimestamp(unix3)) # верно, так как считает по дано время по гринвичу : 2018-01-01 00:00:00+00:00
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д