Comment faire pour obtenir l'heure UTC en Python?
J'ai recherche un tas sur StackExchange pour trouver une solution mais rien n'est tout à fait ce dont j'ai besoin. En JavaScript, je suis en utilisant ce qui suit pour calculer l'heure UTC depuis le 1er janvier 1970:
function UtcNow() {
var now = new Date();
var utc = Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds(), now.getUTCMilliseconds());
return utc;
}
Ce qui serait l'équivalent du code Python?
Vous devez vous connecter pour publier un commentaire.
Essayer ce code qui utilise datetime.utcnow():
Pour vos besoins lorsque vous avez besoin de calculer une quantité de temps passé entre deux dates, et tout ce que vous avez besoin est de soustraire des dates de début et de fin. Les résultats de cette soustraction est une timedelta objet.
De l'python docs:
Et cela signifie que, par défaut, vous pouvez obtenir l'un des domaines mentionnés dans les définitions -
jours, secondes, micro-secondes, millisecondes, des minutes, des heures, des semaines. Aussi timedelta instance a total_seconds() méthode:
Dans la forme la plus proche de votre original:
Si vous avez besoin de connaître le nombre de secondes à partir de 1970-01-01 plutôt qu'un natif Python
datetime
, utilisez ceci à la place:Python a des conventions de nommage qui sont en contradiction avec ce que vous pourriez être utilisé pour en Javascript, voir PEP 8. Aussi, une fonction qui retourne simplement le résultat d'une autre fonction est plutôt ridicule; si c'est juste une question de les rendre plus accessibles, vous pouvez créer un autre nom pour une fonction simplement en l'affectant. Le premier exemple ci-dessus pourrait être remplacé par:
UtcNow = datetime.datetime.utcnow
(les fonctions sont des citoyens de première classe en Python -- vous n'avez pas besoin de créer une nouvelle fonction, ici, à l'appeler avec un nom différent).(now - datetime.datetime(1970, 1, 1)).total_seconds()
... Que dire de justetime.time()
?tzinfo
objets, même pour l'UTC.De datetime.datetime vous avez déjà peut exporter vers les horodatages avec la méthode strftime. À la suite de votre exemple de fonction:
Si vous voulez microsecondes, vous avez besoin de changer l'exportation de la chaîne et de la fonte de flotter comme:
return float(now.strftime("%s.%f"))
time.time()
, Vous pouvez également utiliser le temps.mktime(maintenant.timetuple()) pour convertir directement en int. De toute façon, pour ce cas simple,time.time()
est également une option valable. Ce que je trouve bizarre, va par timedelta pour trouver les secondes.Fuseau horaire courant avec zéro dépendances externes:
Simple, la bibliothèque standard uniquement, pour les modernes python. Donne fuseau horaire-conscient datetime, contrairement à
datetime.utcnow()
.datetimes
sans les fuseaux horaires sont les accidents en attente de se produire.En Python 3 utilisation de l'expression lambda, d'essayer;
et appeler la fonction normalement;
my_stupid_renamed_function = datetime.utcnow