English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ruby Data & Time (Date & Time)

Time La classe è utilizzata in Ruby per rappresentare data e ora. È basata sulla data e ora fornite dal sistema operativo. La classe potrebbe non essere in grado di rappresentare le date prima del 1970 o dopo il 2038.

Questo tutorial ti farà conoscere tutti i concetti importanti di data e ora.

Creare la data e l'ora corrente

Ecco un esempio semplice di come ottenere la data e l'ora corrente:

Esempio online

#!/usr/bin/ruby -w
# -*- coding: UTF-8 -*-
 
time1 = Time.new
 
puts "Ora corrente: " + time1.inspect
 
# La funzione Time.now è la stessa
time2 = Time.now
puts "Ora corrente: " + time2.inspect

以上示例運行輸出結果為:

Ora corrente: 2015-09-17 15:23:14 +0800
Ora corrente: 2015-09-17 15:23:14 +0800

per ottenere i componenti Data & Ora

Possiamo utilizzare Time Oggetti utilizzati per ottenere vari componenti di data e ora. Ecco un esempio:

Esempio online

#!/usr/bin/ruby -w
# -*- coding: UTF-8 -*-
 
time = Time.new
 
# Componenti di Time
puts "Ora corrente: " + time.inspect
puts time.year  # => anno del giorno
puts time.month # => mese del giorno (da 1 a 12)
puts time.day   # => giorno del mese (da 1 a 31)
puts time.wday  # => giorno della settimana nella settimana (0 è domenica)
puts time.yday  # => 365: giorno dell'anno
puts time.hour  # => 23:24: ora in formato 24 ore
puts time.min   # => 59
puts time.sec   # => 59
puts time.usec  # => 999999: microsecondi
puts time.zone  # => "UTC": nome della zona oraria

以上示例運行輸出結果為:

Ora corrente: 2015-09-17 15:24:44 +0800
2015
9
17
4
260
15
24
44
921519
CST

Time.utc,Time.gm and Time.local Function

These functions can be used to format standard date formats, as shown below:

# July 8, 2008
Time.local(2008, 7, 8)  
# July 8, 2008, 09:10 am, local time
Time.local(2008, 7, 8, 9, 10)   
# July 8, 2008, 09:10 UTC
Time.utc(2008, 7, 8, 9, 10)  
# July 8, 2008, 09:10:11 GMT (the same as UTC)
Time.gm(2008, 7, 8, 9, 10, 11)

The following example retrieves all components in the array:

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

Try the following example:

Esempio online

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

以上示例運行輸出結果為:

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

This array can be passed to Time.utc or Time.local Functions to get different date formats, as shown below:

Esempio online

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

以上示例運行輸出結果為:

2015-09-17 15:26:09 UTC

Below is the way to get time, the number of seconds since the epoch (platform-related):

# Returns the number of seconds since the epoch
time = Time.now.to_i  
 
# Converts seconds to Time object
Time.at(time)
 
# Returns the number of seconds since the epoch, including microseconds
time = Time.now.to_f

Time zones and daylight saving time

You can use Time Object to get all information about time zones and daylight saving time, as shown below:

time = Time.new
 
# This is an explanation
time.zone # => "UTC": returns the time zone
time.utc_offset # => 0: UTC is 0 seconds offset from UTC
time.zone # => "PST" (or other time zone)
time.isdst # => false if UTC does not have DST (Daylight Saving Time)
time.utc? # => true if in UTC time zone
time.localtime # Convert to local time zone
time.gmtime # Converti in UTC
time.getlocal # Restituisce un nuovo oggetto Time nella zona oraria locale
time.getutc # Restituisce un nuovo oggetto Time nel UTC

Formattazione della data e dell'ora

Ci sono diversi modi per formattare la data e l'ora. Di seguito è riportato un esempio di parte di essi:

Esempio online

#!/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")

以上示例運行輸出結果為:

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

Istruzioni di formattazione del tempo

Le istruzioni e i metodi elencati nella tabella sottostante Time.strftime Utilizzare insieme.

IstruzioneDescrizione
%aAbbreviazione del giorno della settimana (ad esempio Sun).
%ANome completo del giorno della settimana (ad esempio Sunday).
%bAbbreviazione del mese (ad esempio Jan).
%BNome completo del mese (ad esempio January).
%cRappresentazione preferita della data e dell'ora locale.
%dGiorno del mese (da 01 a 31).
%HOra del giorno, in sistema a 24 ore (da 00 a 23).
%IOra del giorno, in sistema a 12 ore (da 01 a 12).
%jGiorno dell'anno (da 001 a 366).
%mMese dell'anno (da 01 a 12).
%MMinuto nell'ora (da 00 a 59).
%pIndicazione meridiana (AM o PM).
%SSecondo nel minuto (00 o 60).
%USettimana dell'anno corrente, iniziando dal primo domenica (prima settimana del primo giorno) (da 00 a 53).
%WSettimana dell'anno corrente, iniziando dal primo lunedì (prima settimana del primo giorno) (da 00 a 53).
%wGiorno della settimana nel ciclo della settimana (Sunday è 0, da 0 a 6).
%xRappresentazione prioritaria con solo la data senza l'ora.
%XRappresentazione prioritaria con solo l'ora senza la data.
%yRappresentazione dell'anno senza secolo (da 00 a 99).
%YAnno con il secolo.
%ZNome della zona oraria.
%%% carattere.

Algoritmo del tempo

Puoi fare semplici calcoli matematici con il tempo, come mostrato di seguito:

now = Time.now          # 當前時間
puts now
 
past = now - 10          # 10 秒之前。Time - number => Time
puts past
 
future = now + 10        # 從現在開始 10 秒之後。Time + number => Time
puts future
 
diff = future - now      # => 10  Time - Time => 秒數
puts diff

以上示例運行輸出結果為:

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