Ruby Fecha y hora (Date & Time)

TimeLa clase se usa en Ruby para representar fecha y hora. Se basa en la fecha y hora del sistema proporcionadas por el sistema operativo. Esta clase puede no ser capaz de representar fechas anteriores a 1970 o posteriores a 2038.

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

Crear la fecha y hora actuales

A continuación se muestra un ejemplo sencillo para obtener la fecha y hora actuales:

Ejemplo

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

Pruébalo »

El resultado de ejecutar el ejemplo anterior es:

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

Obtener los componentes de Date & Time

Podemos usarTimeobjeto para obtener varios componentes de fecha y hora. Vea el siguiente ejemplo:

Ejemplo

#!/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 (0 es domingo) puts time.yday #=> 365: Día del año puts time.hour #=> 23: Formato de 24 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 ejecutar el ejemplo anterior es:

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

Time.utc、Time.gmyTime.localFunciones

Estas funciones se pueden utilizar para formatear fechas en el formato estándar, como se muestra a continuación:

# July 8, 2008 Time.local(2008, 7, 8) #July 8, 2008, 09:10am, hora local 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 (igual que UTC) Time.gm(2008, 7, 8, 9, 10, 11)

El siguiente ejemplo obtiene todos los componentes en una matriz:

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

Pruebe el siguiente ejemplo:

Ejemplo

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

El resultado de ejecutar el ejemplo anterior es:

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

Esta matriz se puede pasar aTime.utcoTime.localfunción para obtener diferentes formatos de fecha, como se muestra a continuación:

Ejemplo

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

El resultado de ejecutar el ejemplo anterior es:

2015-09-17 15:26:09 UTC

A continuación se muestra la forma de obtener el tiempo, los segundos desde la época (dependiente de la plataforma):

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

Zona horaria y horario de verano

Puede utilizarTimeobjeto para obtener toda la información relacionada con la zona horaria y el horario de verano, como se muestra a continuación:

time = Time.new #Aquí está la 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 de vuelta a UTC time.getlocal #Devuelve un nuevo objeto Time en la zona local time.getutc #Devuelve un nuevo objeto Time en UTC

Dar formato a la hora y la fecha

Hay varias formas de formatear fecha y hora. El siguiente ejemplo demuestra algunas de ellas:

Ejemplo

#!/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 ejecutar el ejemplo anterior es:

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

Directivas de formato de hora

Las directivas enumeradas en la siguiente tabla junto con el métodoTime.strftimese utilizan juntos.

DirectivaDescripció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 fecha y hora local.
%dDía del mes (01 a 31).
%HHora del día en formato de 24 horas (00 a 23).
%IHora del día en formato de 12 horas (01 a 12).
%jDía del año (001 a 366).
%mMes del año (01 a 12).
%MMinutos de la hora (00 a 59).
%pIndicador de meridiano (AM o PM).
%SSegundos del minuto (00 o 60).
%UNúmero de semana del año actual, comenzando desde el primer domingo (como primer día de la primera semana) (00 a 53).
%WNúmero de semana del año actual, comenzando desde el primer lunes (como primer día de la primera semana) (00 a 53).
%wDía de la semana (Sunday es 0, 0 a 6).
%xRepresentación preferida solo con fecha, sin hora.
%XRepresentación preferida solo con hora, sin fecha.
%yAño sin siglo (00 a 99).
%YAño con siglo.
%ZNombre de la zona horaria.
%%Carácter %.

Aritmética de tiempo

Puede hacer algo de aritmética simple con el tiempo, como se muestra a continuación:

now = Time.now #Hora actual puts now past = now - 10 #Hace 10 segundos. Time - number => Time puts past future = now + 10 #10 segundos a partir de ahora. Time + number => Time puts future diff = future - now #=> 10 Time - Time => segundos puts diff

El resultado de ejecutar el ejemplo anterior es:

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