J'ai une chaîne représentant un horodatage Unix (c'est-à-dire "1284101485") en Python, et je voudrais le convertir en une date lisible. Lorsque j'utilise time.strftime
, j'obtiens 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
la source
la source
Réponses:
Utiliser le
datetime
module:la source
.fromtimestamp()
peut échouer pour les dates passées si un fuseau horaire local avait un décalage utc différent. Vous avez besoin d'une base de données de fuseau horaire historique telle que fournie par lepytz
module (ou votre système d'exploitation). Ou tout simplement travailler en UTC et utiliser.utcfromtimestamp()
.pytz
. Si ce n'est pas clair; poser une question de débordement de pile distincte.pytz
solution .Tiré de http://seehuhn.de/pages/pdate
la source
La réponse la plus votée suggère d'utiliser fromtimestamp qui est sujet aux erreurs car il utilise le fuseau horaire local. Pour éviter les problèmes, une meilleure approche consiste à utiliser UTC:
Où posix_time est le temps de l'époque Posix que vous souhaitez convertir
la source
la source
time.ctime()
ettime.localtime()
pourrait échouer pour les dates passées si un fuseau horaire local avait un décalage utc différent. Vous avez besoin d'une base de données de fuseau horaire historique telle que fournie par lepytz
module (ou votre système d'exploitation). Ou tout simplement travailler en UTC et utilisertime.gmtime()
.datetime
pourrait fournir une plage de dates plus large etdatetime.utcfromtimestamp()
pourrait donc être utilisé à la place destime
fonctions.Il se compose de deux parties:
Un moyen portable d'obtenir l'heure locale qui fonctionne même si le fuseau horaire local avait un décalage utc différent dans le passé et que python n'a pas accès à la base de données tz consiste à utiliser un
pytz
fuseau horaire:Pour l'afficher, vous pouvez utiliser n'importe quel format d'heure pris en charge par votre système, par exemple:
Si vous n'avez pas besoin d'une heure locale, pour obtenir une heure UTC lisible à la place:
Si vous ne vous souciez pas des problèmes de fuseau horaire qui pourraient affecter la date de retour ou si python a accès à la base de données tz sur votre système:
Sur Python 3, vous pouvez obtenir un datetime sensible au fuseau horaire en utilisant uniquement stdlib (le décalage UTC peut être incorrect si python n'a pas accès à la base de données tz sur votre système, par exemple, sur Windows):
Les fonctions du
time
module sont des enveloppes minces autour de l'API C correspondante et par conséquent, elles peuvent être moins portables que lesdatetime
méthodes correspondantes , sinon vous pouvez également les utiliser:la source
Pour un horodatage lisible par l'homme à partir d'un horodatage UNIX, je l'ai déjà utilisé dans des scripts:
Production:
'26 décembre 2012'
la source
Vous pouvez convertir l'heure actuelle comme ceci
Pour convertir une date en chaîne dans différents formats.
la source
Outre l'utilisation du package time / datetime , les pandas peuvent également être utilisés pour résoudre le même problème.Voici comment nous pouvons utiliser les pandas pour convertir l' horodatage en date lisible :
Les horodatages peuvent avoir deux formats:
13 chiffres (millisecondes) - Pour convertir les millisecondes à ce jour, utilisez:
10 chiffres (secondes) - Pour convertir les secondes en date, utilisez:
la source
Obtenez la date lisible de l'horodatage avec l'heure également, vous pouvez également changer le format de la date.
la source
En Python 3.6+:
Production:
Explication:
type(value)
la source
la source
Une autre façon de le faire en utilisant la fonction gmtime et format;
Production:
2018-10-4 11:57:44
la source
j'ai juste utilisé avec succès:
la source
une doublure rapide et sale:
«2013-5-5-1-9-43»
la source
Vous pouvez utiliser easy_date pour simplifier:
la source
strptime
etstrftime
n'est pas intuitif ... Et même pas lisible ... Mais je comprends et respecte votre opinion