Дата в UNIX
Но если я забиваю дату 2018-01-01 00:00:00 в какой нибудь онлайн калькулятор unix time выдает 1514764800, а если забить в этот калькулятор время из питона (1514750400.0), выдает Sun, 31 Dec 2017 20:00:00 GMT. Подскажите, пожалуйста, в чем косяк.
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Дата и время в unix
Доброго времени суток. Вопрос в таком плане. При выборе пользователем даты и временив в БД пишется.
Обычная дата в Unix формат
Подскажите пожалуйста как перевести обычную дату, например 05.03.1985, в формат unix date.

Текущая дата в формате UNIX TIME
Подскажите, пожалуйста, как получить текущую дату в формате unix time? Чтобы формат был такой Sun.
Администратор инфраструктуры UNIX и SAN ( IK – M — UNIX ), р
Компания: специализируется на предоставлении широкого спектра ИТ-услуг и поставке бизнес-решений. .
![]()
5415 / 3839 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1

Сообщение было отмечено ioprst как решение
Решение
Сообщение от ioprst 
А ларчик просто открывается. Есть такое время: по Гринвичу. GMT, оно же UTC.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
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
Работа с unix timestamp/time на python

Совсем недавно, я начал свое изучение python. Мне потребовалось несколько дней для того чтобы начать писать на нем элементарные вещи. И мне бы хотелось сохранять полезную информацию в виде своих заметок и для питон.
Как преобразовать unix timestamp в datetime на Python?
Делается это очень просто:
#!/bin/env python3 import datetime timestamp = 1339521878.04 value = datetime.datetime.fromtimestamp(timestamp) print(value.strftime('%Y-%m-%d %H:%M:%S'))
Чтобы получить datetime времени (сейчас), можно выполнить:
#!/bin/env python3 import datetime,time dt = datetime.datetime.now() value = datetime.datetime.fromtimestamp(time.mktime(dt.timetuple())) print(value.strftime('%Y-%m-%d %H:%M:%S'))
Вывод будет следующим:
2017-08-04 14:25:21
Как преобразовать datetime в timestamp на Python?
Делается это очень просто:
#!/bin/env python3 from datetime import datetime import time # time tuple in local time to timestamp time_tuple = (2017, 11, 12, 13, 59, 27, 2, 317, 0) timestamp = time.mktime(time_tuple) print (repr(timestamp)) # time tuple in utc time to timestamp time_tuple_utc = (2017, 11, 12, 13, 59, 27, 2, 317, 0) timestamp_utc = calendar.timegm(time_tuple_utc) print (repr(timestamp_utc))
Конвертация в строку:
#!/bin/env python3 from datetime import datetime import time # datetime object to string dt_obj = datetime(2017, 11, 10, 17, 53, 59) date_str = dt_obj.strftime("%Y-%m-%d %H:%M:%S") print (date_str) # time tuple to string time_tuple = (2017, 11, 12, 13, 51, 18, 2, 317, 0) date_str = time.strftime("%Y-%m-%d %H:%M:%S", time_tuple) print (date_str)
Конвертация в datetime:
#!/bin/env python3 from datetime import datetime import time # time tuple to datetime object time_tuple = (2017, 11, 12, 13, 51, 18, 2, 317, 0) dt_obj = datetime(*time_tuple[0:6]) print (repr(dt_obj)) # date string to datetime object date_str = "2017-11-10 17:53:59" dt_obj = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S") print (repr(dt_obj)) # timestamp to datetime object in local time timestamp = 1226527167.595983 dt_obj = datetime.fromtimestamp(timestamp) print (repr(dt_obj)) # timestamp to datetime object in UTC timestamp = 1226527167.595983 dt_obj = datetime.utcfromtimestamp(timestamp) print (repr(dt_obj))
datetime.datetime(2017, 11, 12, 13, 51, 18) datetime.datetime(2017, 11, 10, 17, 53, 59) datetime.datetime(2008, 11, 12, 23, 59, 27, 595983) datetime.datetime(2008, 11, 12, 21, 59, 27, 595983)
Конвертация time tuples:
#!/bin/env python3 from datetime import datetime import time # datetime object to time tuple dt_obj = datetime(2017, 11, 10, 17, 53, 59) time_tuple = dt_obj.timetuple() print (repr(time_tuple)) # string to time tuple date_str = "2017-11-10 17:53:59" time_tuple = time.strptime(date_str, "%Y-%m-%d %H:%M:%S") print (repr(time_tuple)) # timestamp to time tuple in UTC timestamp = 1226527167.595983 time_tuple = time.gmtime(timestamp) print (repr(time_tuple)) # timestamp to time tuple in local time timestamp = 1226527167.595983 time_tuple = time.localtime(timestamp) print (repr(time_tuple))
time.struct_time(tm_year=2017, tm_mon=11, tm_mday=10, tm_hour=17, tm_min=53, tm_sec=59, tm_wday=4, tm_yday=314, tm_isdst=- 1) time.struct_time(tm_year=2017, tm_mon=11, tm_mday=10, tm_hour=17, tm_min=53, tm_sec=59, tm_wday=4, tm_yday=314, tm_isdst=- 1) time.struct_time(tm_year=2008, tm_mon=11, tm_mday=12, tm_hour=21, tm_min=59, tm_sec=27, tm_wday=2, tm_yday=317, tm_isdst=0 ) time.struct_time(tm_year=2008, tm_mon=11, tm_mday=12, tm_hour=23, tm_min=59, tm_sec=27, tm_wday=2, tm_yday=317, tm_isdst=0 )
Как конвертировать дату из строки в timestamp в python?
Пытаюсь конвертировать в timestamp. Пробовал через datetime.strptime(), но не нашел варианта формата для сокращенных дней недели и месяца.
- Вопрос задан 24 апр.
- 84 просмотра
Комментировать
Решения вопроса 1

Сергей Карбивничий @hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
from datetime import datetime date_str = "Sun Mar 21 11:06:35 +0000 2021" date_format = "%a %b %d %H:%M:%S %z %Y" timestamp = datetime.strptime(date_str, date_format).timestamp() print(timestamp)
Output:
1616324795.0

Вроде правильно работает:
Преобразование строки с Unix-временем в читаемую дату
Один из распространенных вопросов, с которым сталкиваются начинающие программисты на Python, связан с преобразованием строки, представляющей Unix-время, в читаемую дату. Примером может быть строка «1284101485», которую нужно преобразовать в дату.
import time print(time.strftime("%B %d %Y", "1284101485"))
При выполнении этого кода возникает TypeError: argument must be 9-item sequence, not str , что говорит о том, что функция time.strftime ожидает получить последовательность из 9 элементов, а не строку.
Unix-время, также известное как POSIX-время, — это система времени, которая считает количество секунд, прошедших с полуночи 1 января 1970 года по координированному всемирному времени (UTC), без учета високосных секунд.
Важно понимать, что функция time.strftime ожидает получить структуру time.struct_time в качестве второго аргумента, а не строку или число. Эта структура содержит 9 элементов, включая год, месяц, день, часы, минуты, секунды, день недели, день года и признак летнего времени.
Чтобы решить данную проблему, нужно сначала преобразовать строку с Unix-временем в число с плавающей точкой с помощью функции float , затем использовать это число с функцией time.gmtime или time.localtime , чтобы преобразовать Unix-время в структуру time.struct_time , и только после этого передать полученную структуру функции time.strftime .
import time unix_timestamp = "1284101485" unix_timestamp = float(unix_timestamp) time_struct = time.gmtime(unix_timestamp) print(time.strftime("%B %d %Y", time_struct))
При выполнении этого кода будет выведена дата, соответствующая Unix-времени из строки: «September 10 2010».
Таким образом, преобразование строки с Unix-временем в читаемую дату в Python может быть выполнено в три шага: преобразование строки в число, преобразование числа в структуру времени и форматирование структуры времени в строку с датой.