Как я могу рассчитать день недели даты в Ruby? Например, 28 октября 2010 года = четверг
Как рассчитать день недели даты в рубине?
Ответ 1
Я использовал это, потому что я ненавидел идти в Документы Date, чтобы искать синтаксис strftime, не находя его там и помню, что он находится во временных документах.
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
Ответ 2
Посмотрите Ссылка на класс даты. Когда у вас есть объект даты, вы можете просто сделать dateObj.strftime('%A')
для полного дня или dateObj.strftime('%A')
для сокращенного дня. Вы также можете использовать dateObj.wday
для целочисленного значения дня недели и использовать его по своему усмотрению.
Ответ 3
time = Time.at(time) # Convert number of seconds into Time object.
puts time.wday # => 0: Day of week: 0 is Sunday
Ответ 4
Date.today.strftime("%A")
=> "Wednesday"
Date.today.strftime("%A").downcase
=> "wednesday"
Ответ 5
Быстрый, грязный и удобный для локализации:
days = {0 => "Sunday",
1 => "Monday",
2 => "Tuesday",
3 => "Wednesday",
4 => "Thursday",
5 => "Friday",
6 => "Saturday"}
puts "It #{days[Time.now.wday]}"
Ответ 6
Работает из коробки с рубином, не требуя:
Time.now.strftime("%A").downcase #=> "thursday"
Ответ 7
Как сказал @mway, вы можете использовать date.strftime( "% A" ) для любого объекта Date, чтобы получить день недели.
Если вам повезет, Date.parse
может получить вас от String до дня недели за один раз:
def weekday(date_string)
Date.parse(date_string).strftime("%A")
end
Это работает для вашего тестового примера:
weekday("October 28 of 2010") #=> "Thursday"
Ответ 8
Скажем, у меня есть date = Time.now.to_date
то date.strftime("%A")
будет печатать имя для дня недели и иметь только номер дня недели date.wday
.
Ответ 9
В свой объект времени используйте свойство .wday, чтобы получить номер, соответствующий день недели, например. Если .wday возвращает 0, то ваша дата - воскресенье, 1 понедельник и т.д.