2010-10-28 21 views

Respuesta

56

He utilizado este porque odiaba para ir a la fecha de documentos para buscar la sintaxis strftime, no encontrarla allí y tener que recordar que está en los documentos de tiempo.

require 'date' 

class Date 
    def dayname 
    DAYNAMES[self.wday] 
    end 

    def abbr_dayname 
    ABBR_DAYNAMES[self.wday] 
    end 
end 

today = Date.today 

puts today.dayname 
puts today.abbr_dayname 
+10

parece que la clase Time también tiene un método #wday, FWIW. – rogerdpack

+9

Distilling steenslag en una línea que responde directamente al cartel: use 'Date :: ABBR_DAYNAMES [Date.today.wday]'. (Debe incluir la biblioteca de fechas antes de poder usarla: 'require Date'.) Opciones: para mostrar los nombres de días completos en lugar de solo las tres primeras letras, use' DAYNAMES' en lugar de 'ABBR_DAYNAMES'. –

+1

¿hay alguna forma de obtener un número de 0..6 sin convertirlo tú mismo? – Xitcod13

58

Eche un vistazo al Date class reference. Una vez que tiene un objeto de fecha, puede simplemente hacer dateObj.strftime('%A') para el día completo, o dateObj.strftime('%a') para el día abreviado. También puede usar dateObj.wday para el valor entero del día de la semana y usarlo como mejor le parezca.

+2

¿Cómo localizar esto, dicen que si estuviera utilizando rieles ? – Mohamad

2

En su objeto de hora, utilice la propiedad .wday para obtener el número correspondiente al día de la semana, p. Si .wday devuelve 0, entonces la fecha es Domingo, 1 Lunes, etc.

24

Bueno, nunca he codificado en rubí, pero una rápida google da

time = Time.at(time) # Convert number of seconds into Time object. 
puts time.wday # => 0: Day of week: 0 is Sunday 
+1

También hay 'Tiempo # cwday' para obtener fechas en el rango 1-7. También estos métodos son hoy en día (Ruby 2.3 al menos) presente en la clase Date también. – Smar

+1

'Time' no tiene' cwday', pero 'Date' tiene. – Smar

4

Como @mway Dicho esto, puede utilizar date.strftime ("% A") en cualquier objeto Date para obtener el día de la semana.

Si tiene suerte Date.parse podría obtener de String a día de la semana de una sola vez:

def weekday(date_string) 
    Date.parse(date_string).strftime("%A") 
end 

Esto funciona para el caso de test:

weekday("October 28 of 2010") #=> "Thursday" 
4

decir que he date = Time.now.to_date luego date.strftime("%A") imprimirá el nombre para el día de la semana y para tener solo el número para el día de la semana, escriba date.wday.

18
Date.today.strftime("%A") 
=> "Wednesday" 

Date.today.strftime("%A").downcase 
=> "wednesday" 
5

trabaja fuera de la caja con el rubí sin requerir:

Time.now.strftime("%A").downcase #=> "thursday" 
5

rápida, sucio y localización de usar:

days = {0 => "Sunday", 
1 => "Monday", 
2 => "Tuesday", 
3 => "Wednesday", 
4 => "Thursday", 
5 => "Friday", 
6 => "Saturday"} 

puts "It's #{days[Time.now.wday]}" 
Cuestiones relacionadas