Jak uzyskać ostatnią w najbliższą środę, używając Ruby (i Railsów, jeśli istnieje odpowiednia metoda pomocnika)?Czy ostatnio pojawia się środa?
Ostatecznie potrzebna jest faktyczna data (5/1/2013).
Jak uzyskać ostatnią w najbliższą środę, używając Ruby (i Railsów, jeśli istnieje odpowiednia metoda pomocnika)?Czy ostatnio pojawia się środa?
Ostatecznie potrzebna jest faktyczna data (5/1/2013).
to działa w Ruby:
require 'date'
def last_wednesday(date)
date - (date.wday - 3) % 7
end
last_wednesday(Date.today)
# => #<Date: 2013-05-01 ((2456414j,0s,0n),+0s,2299161j)>
W Rails jest beginning_of_week
:
Date.today.beginning_of_week(:wednesday)
# => Wed, 01 May 2013
time = Time.now
days_to_go_back = (time.wday + 4) % 7
last_wed = days_to_go_back.days.ago
To ... to ... Brilliant! – MrYoshiji
całkiem prosta z Date
:
require 'date'
today = DateTime.now.to_date
last_wednesday = today.downto(today - 6).select { |d| d.wednesday? }
Można nawet uzyskać ostatniego tygodnia z wyboru takiego (tu bez obsługi błędów):
def last_weekday(weekday)
today = Time.now.to_date
today.downto(today-6).select do |d|
d.send((weekday.to_s + "?").to_sym)
end
end
Jeśli są w porządku z pomocą innego klejnot, polecam Chronic.
Dzięki niemu można uzyskać w ubiegłą środę, wykonując:
Chronic.parse('last Wednesday')
Najprostszym sposobem (dla mnie) to:
require 'date'
date = Date.today
date -= 1 until date.wednesday?
Całkiem ładny strzał. –
'starting_of_week' to naprawdę ciekawy/zwięzły sposób na rozwiązanie tego problemu. Świetny pomysł! – Shpigford