Comment obtenir le timestamp UTC en Ruby?
time = Time.now.getutc
Justification: À mes yeux, un horodatage est exactement cela: un point dans le temps. Cela peut être représenté avec précision avec un objet. Si vous avez besoin de quelque chose d'autre, une valeur scalaire, par exemple. secondes depuis l’époque Unix, des intervalles de 100 ns depuis 1601 ou peut-être une chaîne à des fins d’affichage ou de stockage de l’horodatage dans une base de données, vous pouvez facilement l’obtenir de l’objet. Mais cela dépend beaucoup de votre utilisation prévue.
Dire qu'un "horodatage vrai est le nombre de secondes depuis que l'époque Unix" manque un peu le point, car c'est n moyen de représenter un point dans le temps, mais il a aussi besoin d'informations supplémentaires sachez que vous avez affaire à une heure et non à un nombre. Un objet Time
résout bien ce problème en représentant un point dans le temps et en expliquant 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 il est triable, relativement compact et largement reconnu:
>> require 'time'
=> true
>> Time.now.utc.iso8601
=> "2011-07-28T23:14:04Z"
Généralement, l'horodatage n'a pas de fuseau horaire.
% irb
> Time.now.to_i == Time.now.getutc.to_i
=> true
À quoi sert 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 une to_s.sub('.','')
pour supprimer le point décimal, ou effectuer un transtypage de caractères comme ceci: Integer(1e6*Time.now.to_f)
.
si vous avez besoin d'un horodatage lisible par l'homme (comme Rails la migration a) ex. "2019052714134"
Time.now.utc.to_formatted_s(:number) # using Rails
Time.now.utc.strftime("%Y%m%d%H%M%S") # using Ruby
Time.utc(2010, 05, 17)