Je veux avoir une datetime
chaîne de la date avec des millisecondes. Ce code est typique pour moi et j'ai hâte 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
python
datetime
string-formatting
Jurudocs
la source
la source
Instant.parse
peut analyser la représentation créée avecstrftime('%Y-%m-%dT%H:%M:%S.%fZ')
Réponses:
Pour obtenir une chaîne de date avec des millisecondes (3 décimales derrière les secondes), utilisez ceci:
Remarque: pour Python3,
print
nécessite des parenthèses:la source
2013-08-23 10:18:32.926
est la sortie deprint datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]
.import datetime
place defrom datetime import datetime
, vous devrez utiliser ceci:datetime.datetime.utcnow().strftime("%H:%M:%S.%f")
Avec Python 3.6, vous pouvez utiliser:
Production:
Plus d'informations ici: https://docs.python.org/3/library/datetime.html#datetime.datetime.isoformat
la source
http://docs.python.org/library/datetime.html#strftime-strptime-behavior
la source
[:-3]
à la fin pour supprimer les 3 derniers chiffres afin qu'il n'affiche que les millisecondes.@Cabbi a soulevé le problème que sur certains systèmes, le format des microsecondes
%f
peut donner"0"
, il n'est donc pas portable de simplement couper les trois derniers caractères.Le code suivant formate soigneusement un horodatage en millisecondes:
Exemple de sortie:
Pour obtenir la sortie exacte souhaitée par l'OP, nous devons supprimer les caractères de ponctuation:
Exemple de sortie:
la source
Probablement comme ceci:
la source
%m
doit être un%M
, car il s'agit de minutes et non de mois.Je suppose que vous voulez dire que vous recherchez quelque chose qui est plus rapide que datetime.datetime.strftime (), et qui supprime essentiellement les caractères non alpha d'un horodatage utc.
Votre approche est légèrement plus rapide, et je pense que vous pouvez accélérer les choses encore plus en coupant la chaîne:
la source
résultat
L'utilisation de translate () et de la méthode de découpage exécutée en même temps
translate () présente l'avantage d'être utilisable en une seule ligne
Comparaison des temps sur la base du premier:
la source
J'ai traité le même problème mais dans mon cas il était important que la milliseconde soit arrondie et non tronquée
la source
la source
la source
la source
Le problème avec
datetime.utcnow()
et d'autres solutions de ce type est qu'elles sont lentes.Une solution plus efficace peut ressembler à celle-ci:
Où
prec
serait3
dans votre cas (millisecondes).La fonction fonctionne jusqu'à 9 décimales (veuillez noter le nombre
9
dans la 2ème chaîne de formatage).Si vous souhaitez arrondir la partie fractionnaire, je vous suggère de construire
"%.9f"
dynamiquement avec le nombre souhaité de décimales.la source