Eu tenho uma string representando um carimbo de data / hora unix (ou seja, "1284101485") em Python e gostaria de convertê-lo para uma data legível. Quando uso time.strftime
, recebo um 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
fonte
fonte
Respostas:
Use o
datetime
módulo:fonte
.fromtimestamp()
poderá falhar em datas passadas se um fuso horário local tiver um deslocamento de utc diferente. Você precisa de um banco de dados histórico de fuso horário, como o fornecido pelopytz
módulo (ou seu sistema operacional). Ou simplesmente trabalhe no UTC e use.utcfromtimestamp()
.pytz
. Se não estiver claro; faça uma pergunta separada do Stack Overflow.pytz
solução .Retirado de http://seehuhn.de/pages/pdate
fonte
A resposta mais votada sugere o uso de fromtimestamp, que é propenso a erros, pois usa o fuso horário local. Para evitar problemas, uma abordagem melhor é usar o UTC:
Onde posix_time é o período da época Posix que você deseja converter
fonte
fonte
time.ctime()
etime.localtime()
poderá falhar em datas passadas se um fuso horário local tiver um deslocamento de utc diferente. Você precisa de um banco de dados histórico de fuso horário, como o fornecido pelopytz
módulo (ou seu sistema operacional). Ou simplesmente trabalhe no UTC e usetime.gmtime()
.datetime
pode fornecer um período mais amplo,datetime.utcfromtimestamp()
podendo ser usado em vez detime
funções.Existem duas partes:
Uma maneira portátil de obter a hora local que funciona, mesmo que o fuso horário local tenha um deslocamento de utc diferente no passado e o python não tenha acesso ao banco de dados tz, é usar um
pytz
fuso horário:Para exibi-lo, você pode usar qualquer formato de hora suportado pelo seu sistema, por exemplo:
Se você não precisar de um horário local, obtenha um horário UTC legível:
Se você não se importa com os problemas de fuso horário que podem afetar a data retornada ou se o python tem acesso ao banco de dados tz no seu sistema:
No Python 3, você pode obter um datetime com reconhecimento de fuso horário usando apenas stdlib (o deslocamento UTC pode estar errado se o python não tiver acesso ao banco de dados tz no seu sistema, por exemplo, no Windows):
As funções do
time
módulo são invólucros finos em torno da API C correspondente e, portanto, podem ser menos portáteis que osdatetime
métodos correspondentes , caso contrário, você também pode usá-los:fonte
Para um registro de data e hora legível por humanos a partir de um registro de data e hora do UNIX, usei isso em scripts antes:
Resultado:
'26 de dezembro de 2012'
fonte
Você pode converter a hora atual como esta
Para converter uma data em sequência para diferentes formatos.
fonte
Além de usar o pacote time / datetime , os pandas também podem ser usados para resolver o mesmo problema.Aqui está como podemos usar os pandas para converter o carimbo de data / hora em data legível :
Os carimbos de data e hora podem estar em dois formatos:
13 dígitos (milissegundos) - Para converter milissegundos até a data, use:
10 dígitos (segundos) - Para converter segundos em data, use:
fonte
Obter a data legível de timestamp com hora também, também você pode alterar o formato da data.
fonte
No Python 3.6+:
Resultado:
Explicação:
type(value)
fonte
fonte
Outra maneira de fazer isso usando a função gmtime e format;
Resultado:
2018-10-4 11:57:44
fonte
eu apenas usei com sucesso:
fonte
um forro rápido e sujo:
'2013-5-5-1-9-43'
fonte
Você pode usar easy_date para facilitar:
fonte
strptime
estrftime
não é intuitivo ... E mesmo não legível ... Mas eu entendo e respeito sua opinião