Reputation: 4081
How can I calculate the day of the week of a date in Ruby? For example, October 28 of 2010 is = Thursday
Upvotes: 69
Views: 87640
Reputation: 310
you can use #name_of_week_day
method like this:
Date.today.name_of_week_day
Upvotes: -2
Reputation: 11
From 2022:
DateTime.current.thursday?
Based on https://apidock.com/ruby/Date/tuesday%3F
And
> DateTime.current.is_a? Date
=> true
Upvotes: 1
Reputation: 2572
basically the same answer as Andreas
days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']
today_is = days[Time.now.wday]
if today_is == 'tuesday'
## ...
end
Upvotes: -1
Reputation: 4392
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.
Upvotes: 76
Reputation: 11360
time = Time.at(time) # Convert number of seconds into Time object.
puts time.wday # => 0: Day of week: 0 is Sunday
Upvotes: 33
Reputation: 14610
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]}"
Upvotes: 10
Reputation: 8825
Works out of the box with ruby without requiring:
Time.now.strftime("%A").downcase #=> "thursday"
Upvotes: 7
Reputation: 3611
Date.today.strftime("%A")
=> "Wednesday"
Date.today.strftime("%A").downcase
=> "wednesday"
Upvotes: 32
Reputation: 80065
I have used this because I hated to go to the Date docs to look up the strftime syntax, not finding it there and having to remember it is in the Time docs.
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
Upvotes: 74
Reputation: 3069
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
.
Upvotes: 5
Reputation: 917
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"
Upvotes: 5
Reputation: 32258
In your time object, use the property .wday to get the number that corresponds with the day of the week, e.g. If .wday returns 0, then your date is Sunday, 1 Monday, etc.
Upvotes: 2