Дата в 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5