How can I calculate the day of the week of a date in Ruby? For example, October 28 of 2010 is = Thursday
Date.today.strftime("%A")
=> "Wednesday"
Date.today.strftime("%A").downcase
=> "wednesday"
Say i have date = Time.now.to_date
then date.strftime("%A")
will print name for the day of the week and to have just the number for the day of the week write date.wday
.
Works out of the box with ruby without requiring:
Time.now.strftime("%A").downcase #=> "thursday"
Take a look at the Date class reference. Once you have a date object, you can simply do dateObj.strftime('%A')
for the full day, or dateObj.strftime('%a')
for the abbreviated day. You can also use dateObj.wday
for the integer value of the day of the week, and use it as you see fit.
As @mway said, you can use date.strftime("%A") on any Date object to get the day of the week.
If you're lucky Date.parse
might get you from String to day of the week in one go:
def weekday(date_string)
Date.parse(date_string).strftime("%A")
end
This works for your test case:
weekday("October 28 of 2010") #=> "Thursday"
Quick, dirty and localization-friendly:
days = {0 => "Sunday",
1 => "Monday",
2 => "Tuesday",
3 => "Wednesday",
4 => "Thursday",
5 => "Friday",
6 => "Saturday"}
puts "It's #{days[Time.now.wday]}"