sirve - ruby tutorial pdf
Código Ruby para obtener la fecha del próximo lunes(o cualquier día de la semana) (5)
Dada una entrada de, por ejemplo,
day = ''Monday''
¿Cómo puedo calcular la fecha del day
?
def date_of_next(day)
...
end
Para alguien como yo que vino aquí buscando una solución en Rails para este problema, a partir de Rails 5.2 hay un método mucho más fácil para hacer esto.
Para cualquier persona (como el póster original) que no utilice Rails específicamente, esta funcionalidad está disponible en la gema ActiveSupport .
Para encontrar el próximo día de la semana, podemos escribir algo como Date.today.next_occurring(:friday)
.
Consulte la documentación para más detalles.
Para cosas como esta confío en la biblioteca chronic .
El código de Ruby sería:
def date_of_next(day)
Chronic.parse("next #{day}")
end
Sé que esta es una publicación anterior, pero se me ocurrió un par de métodos para obtener rápidamente el día anterior y el 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
Si está utilizando rieles, puede usar Date.today.sunday
para el domingo o Date.today.monday
para el lunes. Y luego Date.today.sunday - 1.day
for Saturday, etc.
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)>