Ruby Date et heure

TimeLa classe Time en Ruby est utilisée pour représenter les dates et les heures. Elle est basée sur la date et l'heure système fournies par le système d'exploitation. Cette classe peut ne pas être en mesure de représenter les dates antérieures à 1970 ou postérieures à 2038.

Ce tutoriel vous familiarisera avec tous les concepts importants de la date et de l'heure.

Création de la date et de l'heure actuelles

Voici un exemple simple pour obtenir la date et l'heure actuelles :

Exemple

#!/usr/bin/ruby -w # -*- coding: UTF-8 -*- time1 = Time.new puts "Heure actuelle :" + time1.inspect #Time.now est équivalent time2 = Time.now puts "Heure actuelle :" + time2.inspect

Essayez-le »

La sortie de l'exemple ci-dessus est :

当前时间 : 2015-09-17 15:23:14 +0800
当前时间 : 2015-09-17 15:23:14 +0800

Obtention des composants de date et d'heure

Nous pouvons utiliserTimeobjets Time pour obtenir divers composants de date et d'heure. Voir l'exemple suivant :

Exemple

#!/usr/bin/ruby -w # -*- coding: UTF-8 -*- time = Time.new #Composants de Time puts "Heure actuelle :" + time.inspect puts time.year #=> Année de la date puts time.month #=> Mois de la date (1 à 12) puts time.day #=> Jour du mois (1 à 31) puts time.wday #=> Jour de la semaine (0 correspond à dimanche) puts time.yday #=> 365: Jour de l'année puts time.hour #=> 23: horloge 24 heures puts time.min # => 59 puts time.sec # => 59 puts time.usec #=> 999999: microsecondes puts time.zone #=> "UTC": Nom du fuseau horaire

La sortie de l'exemple ci-dessus est :

当前时间 : 2015-09-17 15:24:44 +0800
2015
9
17
4
260
15
24
44
921519
CST

Time.utc、Time.gmetTime.localFonctions

Ces fonctions peuvent être utilisées pour formater des dates dans des formats standard, comme indiqué ci-dessous :

# 8 juillet 2008 Time.local(2008, 7, 8) #8 juillet 2008, 09:10am, heure locale Time.local(2008, 7, 8, 9, 10) # 8 juillet 2008, 09:10 UTC Time.utc(2008, 7, 8, 9, 10) #8 juillet 2008, 09:10:11 GMT (identique à UTC) Time.gm(2008, 7, 8, 9, 10, 11)

L'exemple suivant récupère tous les composants dans un tableau :

[sec,min,hour,day,month,year,wday,yday,isdst,zone]

Essayez l'exemple suivant :

Exemple

#!/usr/bin/ruby -w time = Time.new values = time.to_a p values

La sortie de l'exemple ci-dessus est :

[39, 25, 15, 17, 9, 2015, 4, 260, false, "CST"]

Ce tableau peut être passé à la fonctionTime.utcouTime.localpour obtenir différents formats de la date, comme indiqué ci-dessous :

Exemple

#!/usr/bin/ruby -w time = Time.new values = time.to_a puts Time.utc(*values)

La sortie de l'exemple ci-dessus est :

2015-09-17 15:26:09 UTC

Voici une façon d'obtenir le temps, le nombre de secondes depuis l'époque (dépendant de la plateforme) :

#Renvoie le nombre de secondes depuis l'époque time = Time.now.to_i #Convertir des secondes en un objet Time Time.at(time) #Renvoie le nombre de secondes depuis l'époque, y compris les microsecondes time = Time.now.to_f

Fuseaux horaires et heure d'été

Vous pouvez utiliser TimeTimeobjets pour obtenir toutes les informations liées aux fuseaux horaires et à l'heure d'été, comme indiqué ci-dessous :

time = Time.new #Voici l'explication : time.zone #=> "UTC": Renvoie le fuseau horaire time.utc_offset #=> 0: UTC est décalé de 0 seconde par rapport à UTC time.zone #=> "PST" (ou autre fuseau horaire) time.isdst #=> false : si UTC n'a pas de DST (heure d'été) time.utc? #=> true : si dans le fuseau horaire UTC time.localtime #Convertir vers le fuseau horaire local time.gmtime #Reconvertir en UTC time.getlocal #Renvoie un nouvel objet Time dans le fuseau local time.getutc #Renvoie un nouvel objet Time en UTC

Formatage de l'heure et de la date

Il existe de nombreuses façons de formater la date et l'heure. L'exemple suivant en démontre quelques-unes :

Exemple

#!/usr/bin/ruby -w time = Time.new puts time.to_s puts time.ctime puts time.localtime puts time.strftime("%Y-%m-%d %H:%M:%S")

La sortie de l'exemple ci-dessus est :

2015-09-17 15:26:42 +0800
Thu Sep 17 15:26:42 2015
2015-09-17 15:26:42 +0800
2015-09-17 15:26:42

Directives de formatage de l'heure

Les directives répertoriées dans le tableau ci-dessous sont utilisées avec la méthodeTime.strftime.

DirectiveDescription
%aNom abrégé du jour de la semaine (par ex., dim.).
%ANom complet du jour de la semaine (par ex., dimanche).
%bNom abrégé du mois (par ex., janv.).
%BNom complet du mois (par ex., janvier).
%cReprésentation locale préférée de la date et de l'heure.
%dJour du mois (01 à 31).
%HHeure du jour, format 24 heures (00 à 23).
%IHeure du jour, format 12 heures (01 à 12).
%jJour de l'année (001 à 366).
%mMois de l'année (01 à 12).
%MMinute de l'heure (00 à 59).
%pIndicateur du méridien (AM ou PM).
%SSeconde de la minute (00 ou 60).
%UNuméro de semaine de l'année en cours, à partir du premier dimanche (comme premier jour de la première semaine) (00 à 53).
%WNuméro de semaine de l'année en cours, à partir du premier lundi (comme premier jour de la première semaine) (00 à 53).
%wJour de la semaine (dimanche vaut 0, 0 à 6).
%xReprésentation préférée pour la date uniquement, sans heure.
%XReprésentation préférée pour l'heure uniquement, sans date.
%yReprésentation de l'année sans le siècle (00 à 99).
%YAnnée avec le siècle.
%ZNom du fuseau horaire.
%%Caractère %.

Arithmétique temporelle

Vous pouvez effectuer quelques opérations arithmétiques simples avec le temps, comme indiqué ci-dessous :

now = Time.now #Heure actuelle puts now past = now - 10 #il y a 10 secondes. Time - nombre => Time puts past future = now + 10 #dans 10 secondes. Time + nombre => Time puts future diff = future - now #=> 10 Time - Time => secondes puts diff

La sortie de l'exemple ci-dessus est :

2015-09-17 15:27:08 +0800
2015-09-17 15:26:58 +0800
2015-09-17 15:27:18 +0800
10.0
Autres extensions