Comment obtenir l’horodatage UTC dans Ruby?

Comment obtenir l’horodatage UTC dans Ruby?

time = Time.now.getutc 

Justification: À mes yeux, l’horodatage est exactement cela: un point dans le temps. Cela peut être représenté avec un object. Si vous avez besoin d’autre chose, une valeur scalaire, par exemple des secondes depuis l’époque Unix, des intervalles de 100 ns depuis 1601 ou une chaîne pour afficher ou enregistrer l’horodatage dans une firebase database, vous pouvez l’obtenir facilement. Mais cela dépend beaucoup de votre utilisation prévue.

Dire qu’un “horodatage vrai est le nombre de secondes écastings depuis l’époque d’Unix” est un point manquant, car c’est une façon de représenter un point dans le temps, mais il faut aussi des informations supplémentaires pour savoir une heure et non un nombre. Un object Time résout ce problème en représentant un point dans le temps et en expliquant clairement ce que c’est .

Vous pouvez utiliser: Time.now.to_i .

Le formatage par défaut n’est pas très utile, à mon avis. Je préfère ISO8601 car c’est sortingable, relativement compact et largement reconnu:

 >> require 'time' => true >> Time.now.utc.iso8601 => "2011-07-28T23:14:04Z" 

Habituellement, l’horodatage n’a pas de fuseau horaire.

 % irb > Time.now.to_i == Time.now.getutc.to_i => true 

A quoi bon un horodatage avec sa granularité donnée en secondes? Je trouve cela beaucoup plus pratique de travailler avec Time.now.to_f. Heck, vous pouvez même lancer un to_s.sub (‘.’, ”) Pour supprimer le point décimal, ou effectuer un transtypage comme ceci: Integer (1e6 * Time.now.to_f).

Time.utc(2010, 05, 17)

time = Time.zone.now()

Cela fonctionnera comme

 irb> Time.zone.now => 2017-12-02 12:06:41 UTC 

La manière correcte est de faire un Time.now.getutc.to_i pour obtenir le bon timestamp, car l’affichage de l’entier ne doit pas toujours être identique à l’horodatage utc en raison des différences de fuseau horaire.