English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Time A classe no Ruby é usada para representar data e hora. Ela é baseada na data e hora do sistema fornecida pelo sistema operacional. A classe pode não poder representar 1970 anos antes ou 2038 Data após o ano.
Este tutorial o tornará familiar com todos os conceitos importantes de data e hora.
A seguir está um exemplo simples de como obter a data e hora atuais:
#!/usr/bin/ruby -w # -*- coding: UTF-8 -*- time1 = Time.new puts "Hora atual : " + time1.inspect # Função igual a Time.now time2 = Time.now puts "Hora atual : " + time2.inspect
O resultado de execução do exemplo acima é:
Hora atual : 2015-09-17 15:23:14 +0800 Hora atual : 2015-09-17 15:23:14 +0800
Podemos usar Time Objeto para obter vários componentes de data e hora. Veja os exemplos a seguir:
#!/usr/bin/ruby -w # -*- coding: UTF-8 -*- time = Time.new # Componentes do Time puts "Hora atual : " + time.inspect puts time.year # => ano da data puts time.month # => mês da data (1 a 12) puts time.day # => dia do mês (1 a 31) puts time.wday # => dia da semana da semana (0 é domingo) puts time.yday # => 365:o dia do ano puts time.hour # => 23:24 horário puts time.min # => 59 puts time.sec # => 59 puts time.usec # => 999999:microsegundos puts time.zone # => "UTC": nome da zona horária
O resultado de execução do exemplo acima é:
Hora atual : 2015-09-17 15:24:44 +0800 2015 9 17 4 260 15 24 44 921519 CST
Essas funções podem ser usadas para formatar datas e horários em formatos padrão, conforme mostrado a seguir:
# julho 8, 2008 Time.local(2008, 7, 8) # julho 8, 2008, 09:10am, hora local Time.local(2008, 7, 8, 9, 10) # julho 8, 2008, 09:10 UTC Time.utc(2008, 7, 8, 9, 10) # julho 8, 2008, 09:10:11 GMT (igual a UTC) Time.gm(2008, 7, 8, 9, 10, 11)
O exemplo a seguir obtém todos os componentes no array:
[sec, min, hour, day, month, year, wday, yday, isdst, zone]
Tente o exemplo a seguir:
#!/usr/bin/ruby -w time = Time.new values = time.to_a p values
O resultado de execução do exemplo acima é:
[39, 25, 15, 17, 9, 2015, 4, 260, false, "CST"]
Este array pode ser passado para Time.utc ou Time.local Função para obter diferentes formatos de data, conforme mostrado a seguir:
#!/usr/bin/ruby -w time = Time.new values = time.to_a puts Time.utc(*values)
O resultado de execução do exemplo acima é:
2015-09-17 15:26:09 UTC
A seguir estão as maneiras de obter a data e hora, os segundos desde a era (relacionados ao plataforma):
# Devolve os segundos desde a era time = Time.now.to_i # Converte os segundos em objeto Time Time.at(time) # Devolve os segundos desde a era, incluindo microsegundos time = Time.now.to_f
Você pode usar Time para obter todas as informações sobre a zona horária e o horário de verão, conforme mostrado a seguir:
time = Time.new # Aqui está a explicação time.zone # => "UTC": Retornar a zona horária time.utc_offset # => 0: UTC é o deslocamento de 0 segundos em relação ao UTC time.zone # => "PST" (ou outra zona horária) time.isdst # => false: Se UTC não tiver DST (horário de verão) time.utc? # => true: Se estiver na zona horária UTC time.localtime # Converter para a zona horária local time.gmtime # Converter para UTC time.getlocal # Retornar um novo objeto Time na zona horária local time.getutc # Retornar um novo objeto Time no UTC
Existem várias maneiras de formatar a data e a hora. Abaixo estão alguns exemplos que demonstram parte deles:
#!/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)
O resultado de execução do exemplo acima é:
2015-09-17 15:26:42 +0800 Thu Set 17 15:26:42 2015 2015-09-17 15:26:42 +0800 2015-09-17 15:26:42
As instruções e métodos listados na tabela a seguir Time.strftime usados juntos.
Comando | Descrição |
---|---|
%a | Abreviação do nome do dia da semana (por exemplo, Sun). |
%A | Nome completo do dia da semana (por exemplo, Domingo). |
%b | Abreviação do nome do mês (por exemplo, Jan). |
%B | Nome completo do mês (por exemplo, Janeiro). |
%c | Representação preferida da data e hora local. |
%d | Número do dia no mês (01 a 31) |
%H | Número da hora no dia,24 Sistema horário (00 a 23) |
%I | Número da hora no dia,12 Sistema horário (01 a 12) |
%j | Número do dia do ano (001 a 366) |
%m | Número do mês do ano (01 a 12) |
%M | Número do minuto no hora (00 a 59) |
%p | Indicação da meridiana (AM ou PM). |
%S | Número do segundo no minuto (00 ou 60). |
%U | Número da semana do ano, começando pela primeira domingo (considerado o primeiro dia da primeira semana) (00 a 53) |
%W | Número da semana do ano, começando pela primeira segunda-feira (considerada a primeira semana) (00 a 53) |
%w | Qual dia da semana (Sunday é 0, 0 a 6) |
%x | Formato preferencial sem hora e apenas data. |
%X | Formato preferencial sem data e apenas hora. |
%y | Ano sem século (00 a 99) |
%Y | Ano com século. |
%Z | Nome do Fuso Horário. |
%% | % Caracter. |
Você pode fazer cálculos simples com tempo, como mostrado a seguir:
now = Time.now # Tempo atual puts now past = now - 10 # 10 Segundos antes. Time - number => Time puts past future = now + 10 # A partir de agora 10 Segundos após. Time + number => Time puts future diff = future - now # => 10 Time - Time => Segundos puts diff
O resultado de execução do exemplo acima é:
2015-09-17 15:27:08 +0800 2015-09-17 15:26:58 +0800 2015-09-17 15:27:18 +0800 10.0