Comment convertir un timestamp unix (secondes depuis l'époque) en datetime ruby?

Créé le 09 Dec 2022 - Mis à jour le 04 Jul 2023 - Créé par Fabien Berthoux - rubydatetime

Convertir un timestamp Unix en DateTime Ruby consiste à utiliser la classe Time de Ruby pour créer un objet Time à partir du timestamp Unix. Une fois l'objet créé, vous pouvez le convertir en objet DateTime en utilisant la méthode to_datetime. Cette méthode renverra un objet DateTime décodé à partir du timestamp Unix. Le timestamp Unix est une valeur numérique qui représente le nombre de secondes écoulées depuis le 1er janvier 1970, 00:00:00 UTC, mais vous pouvez également le spécifier en millisecondes, microsecondes ou nanosecondes.

require 'time'

unix_timestamp = 1609372800

time = Time.at(unix_timestamp)
date_time = time.to_datetime

puts date_time
#=>> #<datetime:>

Qu'est-ce qu'un timestamp Unix ?


Un timestamp Unix est une valeur numérique qui représente le nombre de secondes écoulées depuis le 1er janvier 1970, 00:00:00 UTC. Il peut aussi être spécifié en millisecondes, microsecondes ou nanosecondes.

Dois-je importer un module spécifique ?


Oui, il est nécessaire d'importer le module Time avec la commande suivante : require 'time'.

Quelles sont les étapes pour convertir un timestamp Unix en DateTime ?


Les étapes pour convertir un timestamp Unix en DateTime sont les suivantes :

  1. Importer le module Time.
  2. Créer un objet Time à partir du timestamp Unix.
  3. Utiliser la méthode to_datetime sur l'objet Time pour le convertir en objet DateTime.
require 'time'

unix_timestamp = 1609372800

time = Time.at(unix_timestamp)
date_time = time.to_datetime

puts date_time
#=>> #<datetime:>

Peut-on convertir un timestamp Unix en DateTime sans utiliser la classe Time ?


Non, il est nécessaire d'utiliser la classe Time pour convertir un timestamp Unix en DateTime. Sans cette classe, il est impossible de créer un objet Time à partir d'un timestamp Unix et donc de le convertir en DateTime.

require 'time'

unix_timestamp = 1609372800

time = Time.at(unix_timestamp)
date_time = time.to_datetime

puts date_time
#=>> #<datetime:>

Puis-je convertir un timestamp Unix en DateTime avec un fuseau horaire ?


Oui, il est possible de convertir un timestamp Unix en DateTime avec un fuseau horaire. Pour ce faire, vous devez ajouter un argument optionnel avec le fuseau horaire à la méthode Time.at pour créer l'objet Time, puis utiliser la méthode to_datetime pour convertir l'objet Time en DateTime avec le fuseau horaire spécifié.

require 'time'

unix_timestamp = 1609372800
time_zone = 'America/Los_Angeles'

time = Time.at(unix_timestamp, time_zone)
date_time = time.to_datetime

puts date_time
#=>> #<datetime:>

Puis-je convertir un timestamp Unix en DateTime avec une précision inférieure à la seconde ?


Oui, il est possible de convertir un timestamp Unix en DateTime avec une précision inférieure à la seconde en spécifiant le timestamp Unix en millisecondes, microsecondes ou nanosecondes. Pour ce faire, vous devez ajouter un argument optionnel avec la précision du timestamp Unix à la méthode Time.at pour créer l'objet Time, puis utiliser la méthode to_datetime pour convertir l'objet Time en DateTime avec la précision spécifiée.

```ruby require ‘time’

unix_timestamp = 1609372800000000 precision = 1000000000

time = Time.at(unix_timestamp, precision) date_time = time.to_datetime

puts date_time #=» #<datetime:> ```</datetime:></datetime:></datetime:></datetime:></datetime:>