J'ai cherché une solution sur StackExchange, mais rien ne fait tout ce dont j'ai besoin. En JavaScript, j'utilise 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;
}
Quel serait le code Python équivalent?
Réponses:
Essayez ce code qui utilise datetime.utcnow () :
Pour vos besoins, lorsque vous devez calculer un temps passé entre deux dates, il vous suffit de soustraire les dates de fin et de début. Le résultat d'une telle soustraction est un objet timedelta.
À partir de la documentation Python:
Et cela signifie que par défaut, vous pouvez obtenir l'un des champs mentionnés dans sa définition - jours, secondes, microsecondes, millisecondes, minutes, heures, semaines. L'instance timedelta a également la méthode total_seconds () qui:
la source
Dans la forme la plus proche de votre original:
Si vous avez besoin de connaître le nombre de secondes à partir du 01/01/1970 plutôt que d'un Python natif
datetime
, utilisez plutôt ceci:Python a des conventions de dénomination qui sont en contradiction avec ce à quoi vous pourriez être habitué en Javascript, voir PEP 8 . De plus, une fonction qui renvoie simplement le résultat d'une autre fonction est plutôt idiote; s'il s'agit simplement de la rendre plus accessible, vous pouvez créer un autre nom pour une fonction en l'attribuant simplement. Le premier exemple ci-dessus pourrait être remplacé par:
la source
tzinfo
objet, même pour UTC.Bibliothèque standard simple uniquement, pour python moderne. Donne une datetime tenant compte du fuseau horaire, contrairement à
datetime.utcnow()
.datetimes
sans fuseaux horaires, des accidents attendent de se produire.la source
la source
Depuis datetime.datetime, vous pouvez déjà exporter vers des horodatages avec la méthode strftime. En suivant votre exemple de fonction:
Si vous voulez des microsecondes, vous devez changer la chaîne d'exportation et la transtyper en flottant comme:
return float(now.strftime("%s.%f"))
la source
time.time()
, vous pouvez également utiliser time.mktime (now.timetuple ()) pour convertir directement en int. Quoi qu'il en soit, pour ce cas simpletime.time()
est également une option valable. Ce que je trouve étrange, c'est de passer par timedelta pour trouver les secondes.strftime("%s")
dépend de la plate-forme et ne fonctionne pas sous Windows. (Du moins, ce n'est pas le cas pour moi sur Windows 10).Fuseau horaire conscient avec zéro dépendances externes:
la source
Dans Python 3 en utilisant l'expression lambda, essayez;
et appelez la fonction normalement;
la source