Format datetime dans une chaîne de caractères avec millisecondes
Je veux avoir un datetime
chaîne à partir de la date avec millisecondes. Ce code est typique pour moi et je suis impatient d'apprendre à le raccourcir.
from datetime import datetime
timeformatted= str(datetime.utcnow())
semiformatted= timeformatted.replace("-","")
almostformatted= semiformatted.replace(":","")
formatted=almostformatted.replace(".","")
withspacegoaway=formatted.replace(" ","")
formattedstripped=withspacegoaway.strip()
print formattedstripped
- stackoverflow.com/questions/311627/...
- S'il vous plaît écrire un titre qui décrit votre problème et essayez de garder votre question claire et précise.
- Il est important de mentionner ici qu'une précision supplémentaire est souvent très bien. Par exemple, Java
Instant.parse
peut analyser represenation créé avecstrftime('%Y-%m-%dT%H:%M:%S.%fZ')
Vous devez vous connecter pour publier un commentaire.
Pour obtenir une chaîne de date avec la milliseconde (3 décimales derrière secondes), utilisez ceci:
2013-08-23 10:18:32.926
est la sortie deprint datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]
.import datetime
au lieu defrom datetime import datetime
, vous aurez à utiliser ceci:datetime.datetime.utcnow().strftime("%H:%M:%S.%f")
(dt, micro) = datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f').split('.') ; dt = "%s.%03d" % (dt, int(micro) / 1000) ; print dt
. J'ai ajouté cela comme une réponse.(dt, micro) = datetime.datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f').split('.') ; dt = "%s.%03d" % (dt, round(int(micro) / 1000.0)) ; print dt
http://docs.python.org/library/datetime.html#strftime-strptime-behavior
[:-3]
à la fin de déposer les 3 derniers chiffres de telle sorte que c'est seulement l'affichage de millisecondes.@Cabbi soulevé la question que sur certains systèmes, le nombre de microsecondes format
%f
peut donner"0"
, il n'est donc pas portable tout simplement de couper les trois derniers caractères.Le code suivant attentivement les formats de type timestamp avec millisecondes:
Exemple De Sortie:
Pour obtenir la sortie exacte que l'OP voulait, nous avons à la bande de caractères de ponctuation:
Exemple De Sortie:
Avec Python 3.6 vous pouvez utiliser:
De sortie:
Plus d'infos ici: https://docs.python.org/3/library/datetime.html#datetime.datetime.isoformat
Je suppose que vous dire que vous êtes à la recherche de quelque chose qui est plus rapide que le type datetime.datetime.strftime(), et sont essentiellement le décapage de la non-caractères alpha à partir d'un horodatage utc.
Vous êtes l'approche est légèrement plus rapide, et je pense que vous pouvez accélérer encore plus les choses par tranchage de la chaîne:
Sans doute comme cela :
%m
doit être un%M
, car il est à quelques minutes, et non des mois.résultat
Utilisation de translate() et découpage méthode s'exécuter en même temps
translate() présente l'avantage d'être utilisable en une seule ligne
Comparant la fois sur la base de la première:
J'ai traité avec le même problème, mais dans mon cas, il était important que l'ordre de la milliseconde est arrondi et non tronquée