Один из распространенных вопросов, с которым сталкиваются начинающие программисты на 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 может быть выполнено в три шага: преобразование строки в число, преобразование числа в структуру времени и форматирование структуры времени в строку с датой.
Добавить комментарий