Tengo una cadena que representa una marca de tiempo de Unix (es decir, "1284101485") en Python, y me gustaría convertirla en una fecha legible. Cuando uso time.strftime
, obtengo un 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
fuente
fuente
Respuestas:
Usar
datetime
módulo:fuente
.fromtimestamp()
podría fallar para fechas pasadas si una zona horaria local tuviera un desplazamiento utc diferente. Necesita una base de datos histórica de zonas horarias como la proporcionada por elpytz
módulo (o su sistema operativo). O simplemente trabaje en UTC y úselo.utcfromtimestamp()
.pytz
. Si no está claro; haga una pregunta por separado sobre el desbordamiento de pila.pytz
solución .Tomado de http://seehuhn.de/pages/pdate
fuente
La respuesta más votada sugiere usar fromtimestamp, que es propenso a errores ya que usa la zona horaria local. Para evitar problemas, un mejor enfoque es usar UTC:
Donde posix_time es el tiempo de época de Posix que desea convertir
fuente
fuente
time.ctime()
ytime.localtime()
podría fallar para fechas pasadas si una zona horaria local tuviera un desplazamiento utc diferente. Necesita una base de datos histórica de zonas horarias como la proporcionada por elpytz
módulo (o su sistema operativo). O simplemente trabaje en UTC y úselotime.gmtime()
.datetime
podría proporcionar un rango de fechas más amplio, por lo quedatetime.utcfromtimestamp()
podría usarse en lugar detime
funciones.Hay dos partes:
Una forma portátil de obtener la hora local que funciona incluso si la zona horaria local tenía un desplazamiento utc diferente en el pasado y python no tiene acceso a la base de datos tz es usar una
pytz
zona horaria:Para mostrarlo, puede usar cualquier formato de hora que sea compatible con su sistema, por ejemplo:
Si no necesita una hora local, para obtener una hora UTC legible en su lugar:
Si no le importan los problemas de zona horaria que podrían afectar la fecha de devolución o si python tiene acceso a la base de datos tz en su sistema:
En Python 3, puede obtener una fecha y hora con reconocimiento de zona horaria utilizando solo stdlib (el desplazamiento UTC puede ser incorrecto si python no tiene acceso a la base de datos tz en su sistema, por ejemplo, en Windows):
Las funciones del
time
módulo son envoltorios delgados alrededor de la API C correspondiente y, por lo tanto, pueden ser menos portátiles que losdatetime
métodos correspondientes; de lo contrario, también podría usarlos:fuente
Para una marca de tiempo legible por humanos de una marca de tiempo UNIX, he usado esto en scripts antes:
Salida:
'26 de diciembre de 2012'
fuente
Puedes convertir la hora actual así
Para convertir una fecha en cadena a diferentes formatos.
fuente
Además de usar el paquete de hora / fecha y hora , los pandas también se pueden usar para resolver el mismo problema. Así es como podemos usar los pandas para convertir la marca de tiempo en fecha legible :
Las marcas de tiempo pueden estar en dos formatos:
13 dígitos (milisegundos): para convertir milisegundos hasta la fecha, use:
10 dígitos (segundos): para convertir segundos a la fecha, use:
fuente
Obtenga la fecha legible de la marca de tiempo con la hora también, también puede cambiar el formato de la fecha.
fuente
En Python 3.6+:
Salida:
Explicación:
type(value)
fuente
fuente
Otra forma en que esto se puede hacer usando gmtime y la función de formato;
Salida:
2018-10-4 11:57:44
fuente
Acabo de usar con éxito:
fuente
un revestimiento rápido y sucio:
'2013-5-5-1-9-43'
fuente
Puede usar easy_date para facilitarlo:
fuente
strptime
ystrftime
no es intuitivo ... E incluso no es legible ... Pero entiendo y respeto tu opinión