2017-02-10 4 views
-3

Je sais que cela a été demandé mais il n'y avait pas de solution fournie ici. Python UTC datetime object's ISO format doesn't include Z (Zulu or Zero offset)Horodatage Python UTC au format ISO

Je cherche un propre façon de générer horodatage UTC avec ce format en Python. Le format dont j'ai besoin est 2013-10-29T09:38:41.341Z. En particulier, j'ai besoin d'inclure "Z" à la fin. Le datetime.utcnow().isoformat() de Python n'ajoute pas "Z" à la fin.

Notez que l'ajout manuel de "Z" n'est pas une solution que je peux accepter. Je cherche une manière propre de faire ceci.

Quelle est la manière propre de générer l'horodatage UTC au format ISO avec le suffixe Z?

+0

"[Si le temps est en UTC, ajoutez un Z directement après le temps sans espace.] (Https://en.wikipedia.org/wiki/ISO_8601#UTC)" - il n'y a rien de mal à l'ajouter si c'est fait correctement. [Ceci est une méthode décente] (http://stackoverflow.com/questions/42154763/python-utc-timestamp-with-iso-format#comment71475798_42154929), car il convertit très bien. –

Répondre

2

Que diriez-vous quelque chose comme

datetime.utcnow().isoformat()[:-3] + 'Z' 
+1

Comme je l'ai écrit, ajouter manuellement comme ceci n'est pas acceptable pour moi. C'est hacky. – sh0731

+0

Pourquoi n'est-ce pas acceptable? –

+0

Si vous pensez que c'est une solution élégante, vous avez des normes différentes de la mienne. Je détesterais voir mon code faire quelque chose comme ça. Ce n'est définitivement pas propre à mon avis. – sh0731

1

Vous pouvez utiliser la bibliothèque arrow.

Arrow ne le couvre pas encore, voir github issue. Et je ne pense pas que la bibliothèque python le fasse encore. Mais il est assez simple de pirater pour le moment.

besoin d'être installé avec pip si:

$ pip install arrow 

ensuite obtenir votre format iso, mais sans le format Zulu

import arrow 

arrow.utcnow().isoformat() 
#'2017-02-10T08:44:38.954159+00:00' 

Ou vous faites votre propre.

arrow.utcnow().format('YYYY-MM-DDTHH:mm:ss.SSS') + 'Z' 
# 2017-02-11T12:34:30.483Z 
+0

lire attentivement la question. ce n'est pas le format que je veux. Je veux le suffixe "Z". Pas le "+00: 00" – sh0731

+1

arrow.utcnow(). Format ('AAAA-MM-DDTHH: mm: ss.SSS') + 'Z' a bien fonctionné merci beaucoup – RCP