dada una entrada de, por ejemplo,código Ruby para obtener la fecha del próximo lunes (o cualquier día de la semana)
day = 'Monday'
¿Cómo puedo calcular la fecha de day
?
def date_of_next(day)
...
end
dada una entrada de, por ejemplo,código Ruby para obtener la fecha del próximo lunes (o cualquier día de la semana)
day = 'Monday'
¿Cómo puedo calcular la fecha de day
?
def date_of_next(day)
...
end
require 'date'
def date_of_next(day)
date = Date.parse(day)
delta = date > Date.today ? 0 : 7
date + delta
end
Date.today
#=>#<Date: 2011-10-28 (4911725/2,0,2299161)>
date_of_next "Monday"
#=>#<Date: 2011-10-31 (4911731/2,0,2299161)>
date_of_next "Sunday"
#=>#<Date: 2011-10-30 (4911729/2,0,2299161)>
Para cosas como esta confío en la biblioteca chronic.
código de The Ruby sería:
def date_of_next(day)
Chronic.parse("next #{day}")
end
Sé que esto es una entrada antigua, pero me encontré con un par de métodos para obtener rápidamente el día anterior y siguiente de la semana.
# date is a Date object and day_of_week is 0 to 6 for Sunday to Saturday
require 'Date'
def get_next_day(date, day_of_week)
date + ((day_of_week - date.wday) % 7)
end
def get_previous_day(date, day_of_week)
date - ((date.wday - day_of_week) % 7)
end
puts today = Date.today
# 2015-02-24
puts next_friday = get_next_day(today, 5)
# 2015-02-27
puts last_friday = get_previous_day(today, 5)
# 2015-02-20
en su ejemplo, usted utilizó "5" como el día de la semana, pero escribió el lunes como el nombre de la variable. Creo que quisiste usar "viernes" – schpet
@PETER: gracias por atrapar que –
Si está utilizando rieles puede utilizar Date.today.sunday
para el domingo o Date.today.monday
para el lunes. Y luego Date.today.sunday - 1.day
para el sábado, etc.
'Date.today' solo está disponible si estás utilizando Rails o has incluido ActiveSupport. Incluso entonces 'Date.today.monday' da' undefined method' – max
Esto realmente funciona para mí. 'irb (main): 001: 0> Date.today.monday => Lun, 17 Ago 2015' –
'Date.today.monday' debería funcionar, pero dicho método solo existe para' # lunes', no el otro días de la semana. http://www.rubydoc.info/docs/rails/4.0.0/DateAndTime/Calculations#monday-instance_method – bigtex777
'Date.parse (day)' truco impresionante ... antes de esta respuesta no lo sabía .. +1 –
Increíble, gracias – joseramonc