У меня есть строка, представляющая метку времени Unix (то есть «1284101485») в Python, и я хотел бы преобразовать ее в удобочитаемую дату. Когда я использую time.strftime
, я получаю TypeError
:
>>>import time
>>>print time.strftime("%B %d %Y", "1284101485")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: argument must be 9-item sequence, not str
python
datetime
unix-timestamp
strftime
VeryNewToPython
источник
источник
Ответы:
Используйте
datetime
модуль:источник
.fromtimestamp()
может потерпеть неудачу в прошлые даты, если местный часовой пояс имеет другое смещение utc. Вам нужна историческая база данных о часовых поясах, например, предоставленнаяpytz
модулем (или вашей ОС). Или просто работать в UTC и использовать.utcfromtimestamp()
.pytz
. Если неясно; задать отдельный вопрос переполнения стека.pytz
решение .Взято с http://seehuhn.de/pages/pdate
источник
Ответ с наибольшим количеством голосов предлагает использовать метку времени, которая подвержена ошибкам, поскольку она использует местный часовой пояс. Чтобы избежать проблем, лучше использовать UTC:
Где posix_time - это время эпохи Posix, которое вы хотите преобразовать
источник
источник
time.ctime()
иtime.localtime()
может потерпеть неудачу для прошлых дат, если местный часовой пояс имеет другое смещение utc. Вам нужна историческая база данных о часовых поясах, например, предоставленнаяpytz
модулем (или вашей ОС). Или просто работать в UTC и использоватьtime.gmtime()
.datetime
может обеспечить более широкий диапазон дат, поэтомуdatetime.utcfromtimestamp()
может использоваться вместоtime
функций.Есть две части:
Переносимый способ получить местное время, которое работает, даже если в прошлом местный часовой пояс имел другое смещение utc, а python не имеет доступа к базе данных tz, - это использовать
pytz
часовой пояс:Чтобы отобразить его, вы можете использовать любой формат времени, поддерживаемый вашей системой, например:
Если вам не нужно местное время, вместо этого получите читаемое время UTC:
Если вас не волнуют проблемы с часовым поясом, которые могут повлиять на возвращаемую дату или если у python есть доступ к базе данных tz в вашей системе:
На Python 3 вы можете получить дату и время с учетом часового пояса, используя только stdlib (смещение UTC может быть неправильным, если у python нет доступа к базе данных tz в вашей системе, например, в Windows):
Функции из
time
модуля являются тонкими обертками вокруг соответствующего C API, и поэтому они могут быть менее переносимыми, чем соответствующиеdatetime
методы, в противном случае вы также можете использовать их:источник
Для удобочитаемой метки времени из метки времени UNIX я использовал это в сценариях раньше:
Вывод:
26 декабря 2012 г.
источник
Вы можете конвертировать текущее время, как это
Для преобразования даты в строку в разные форматы.
источник
Помимо использования пакета время / дата / время , панды также могут быть использованы для решения той же проблемы. Вот как мы можем использовать панд для преобразования метки времени в читаемую дату :
Метки времени могут быть в двух форматах:
13 цифр (миллисекунд) - для преобразования миллисекунд в дату используйте:
10 цифр (секунд) - чтобы преобразовать секунды в дату, используйте:
источник
Получите читаемую дату из отметки времени со временем, также вы можете изменить формат даты.
источник
В Python 3.6+:
Вывод
объяснение
type(value)
бонус
Чтобы сохранить дату в строку, а затем распечатать ее, используйте это:
источник
источник
Другой способ сделать это можно с помощью функции gmtime и format;
Вывод:
2018-10-4 11:57:44
источник
я просто успешно использовал:
источник
быстрый и грязный лайнер:
'2013-5-5-1-9-43'
источник
Вы можете использовать easy_date, чтобы сделать это легко:
источник
strptime
иstrftime
не интуитивно понятный ... и даже не читаемый ... Но я понимаю и уважаю ваше мнение