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

Ruby Fecha & Hora (Date & Time)

Time La clase en Ruby se utiliza para representar fechas y horas. Se basa en la fecha y hora del sistema proporcionada por el sistema operativo. Esta clase puede no poder representar 197O antes de 0 años o 2038 Fecha después del año.

Este tutorial le presentará todos los conceptos importantes de fecha y hora.

Crear la fecha y la hora actuales

A continuación, se muestra un ejemplo simple de cómo obtener la fecha y hora actual:

Ejemplo en línea

#!/usr/bin/ruby -w
# -*- coding: UTF-8 -*-
 
time1 = Time.new
 
puts "Hora actual : " + time1.inspect
 
# Función igual a Time.now
time2 = Time.now
puts "Hora actual : " + time2.inspect

El resultado de la ejecución de los ejemplos anteriores es:

Hora actual : 2015-09-17 15:23:14 +0800
Hora actual : 2015-09-17 15:23:14 +0800

para obtener componentes de Fecha & Hora

Podemos usar Time El objeto para obtener varios componentes de fechas y horas. Vea el siguiente ejemplo:

Ejemplo en línea

#!/usr/bin/ruby -w
# -*- coding: UTF-8 -*-
 
time = Time.new
 
# Componentes de Time
puts "Hora actual : " + time.inspect
puts time.year			# => año de la fecha
puts time.month			# => mes de la fecha (1 a 12)
puts time.day			# => día del mes (1 a 31)
puts time.wday			# => día de la semana en la semana (0 es domingo)
puts time.yday			# => 365:día del año
puts time.hour			# => 23:24 Formato de 12 horas
puts time.min			# => 59
puts time.sec			# => 59
puts time.usec			# => 999999:microsegundos
puts time.zone			# => "UTC": nombre de la zona horaria

El resultado de la ejecución de los ejemplos anteriores es:

Hora actual : 2015-09-17 15:24:44 +0800
2015
9
17
4
260
15
24
44
921519
CST

Time.utc,Time.gm y Time.local La función

Estas funciones se pueden usar para formatear fechas en formatos estándar, como se muestra a continuación:

# Julio 8, 2008
Time.local(2008, 7, 8)  
# Julio 8, 2008, 09:10am, hora local
Time.local(2008, 7, 8, 9, 10)   
# Julio 8, 2008, 09:10 UTC
Time.utc(2008, 7, 8, 9, 10)  
# Julio 8, 2008, 09:10:11 GMT (igual que UTC)
Time.gm(2008, 7, 8, 9, 10, 11)

A continuación, se muestra cómo obtener todos los componentes del array:

[seg, min, hora, día, mes, año, wday, yday, isdst, zone]

Pruebe el siguiente ejemplo:

Ejemplo en línea

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

El resultado de la ejecución de los ejemplos anteriores es:

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

Este array se puede pasar a Time.utc o Time.local La función para obtener diferentes formatos de fechas, como se muestra a continuación:

Ejemplo en línea

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

El resultado de la ejecución de los ejemplos anteriores es:

2015-09-17 15:26:09 UTC

A continuación, se muestra cómo obtener la hora de la manera, los segundos desde la era (relacionado con la plataforma):

# Devuelve los segundos desde la era
time = Time.now.to_i  
 
# Convierte los segundos en un objeto Time
Time.at(time)
 
# Devuelve los segundos desde la era, incluyendo los microsegundos
time = Time.now.to_f

Zona horaria y horario de verano

para obtener toda la información relacionada con la zona horaria y el horario de verano, como se muestra a continuación: Time Se puede usar

time = Time.new
 
# Aquí hay una explicación
time.zone       # => "UTC": Devuelve la zona horaria
time.utc_offset # => 0: UTC es el desplazamiento de 0 segundos con respecto a UTC
time.zone       # => "PST" (u otra zona horaria)
time.isdst      # => false: Si UTC no tiene DST (horario de verano)
time.utc?       # => true: Si está en la zona horaria UTC
time.localtime  # Convertir a la zona horaria local
time.gmtime     # Convertir a UTC
time.getlocal   # Devuelve un nuevo objeto Time en la zona horaria local
time.getutc     # Devuelve un nuevo objeto Time en UTC

Formateo de tiempo y fecha

Hay varias formas de formatear la fecha y la hora. A continuación se muestra un ejemplo de algunas de ellas:

Ejemplo en línea

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

El resultado de la ejecución de los ejemplos anteriores es:

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

Instrucciones de formateo de tiempo

Las instrucciones y métodos enumerados en la siguiente tabla Time.strftime Usar juntos.

InstrucciónDescripción
%aAbreviatura del nombre del día de la semana (por ejemplo, Sun).
%ANombre completo del día de la semana (por ejemplo, Sunday).
%bAbreviatura del nombre del mes (por ejemplo, Jan).
%BNombre completo del mes (por ejemplo, January).
%cRepresentación preferida de la fecha y la hora local.
%dEl día en el mes (01 a 31)
%HLa hora en el día,24 Sistema horario (00 a 23)
%ILa hora en el día,12 Sistema horario (01 a 12)
%jEl día del año actual (001 a 366)
%mEl mes del año actual (01 a 12)
%MEl minuto en la hora (00 a 59)
%pIndicación del meridiano (AM o PM).
%SEl segundo segundo en el minuto (00 o 60).
%ULa semana del año actual, comenzando el primer domingo (como el primer día de la primera semana) de 00 a 53)
%WLa semana del año actual, comenzando el primer lunes (como el primer día de la primera semana) de 00 a 53)
%w¿Cuál es el día de la semana en la semana (domingo es 0, de 0 a 6)
%xFormato de representación preferente sin hora y solo fecha.
%XFormato de representación preferente sin fecha y solo hora.
%yAño sin siglo (00 a 99)
%YAño con siglo.
%ZNombre de la zona horaria.
%%% carácter.

Algoritmos de tiempo

Puedes hacer cálculos aritméticos con el tiempo, como se muestra a continuación:

now = Time.now           # Tiempo actual
puts now
 
past = now - 10          # 10 Antes de X segundos. Time - number => Time
puts past
 
future = now + 10        # Desde ahora 10 Después de X segundos. Time + number => Time
puts future
 
diff = future - now      # => 10  Time - Time => número de segundos
puts diff

El resultado de la ejecución de los ejemplos anteriores es:

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