Как рассчитать день недели даты в рубине? - PullRequest
53 голосов
/ 28 октября 2010

Как рассчитать день недели для даты в Ruby? Например, 28 октября 2010 года = четверг

Ответы [ 9 ]

62 голосов
/ 28 октября 2010

Я использовал это, потому что ненавидел ходить в документы Date, чтобы посмотреть синтаксис strftime, не найти его там и не запомнить, что он есть в документах Time.

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
61 голосов
/ 28 октября 2010

Взгляните на ссылку на класс даты .Если у вас есть объект даты, вы можете просто сделать dateObj.strftime('%A') для полного дня или dateObj.strftime('%a') для сокращенного дня.Вы также можете использовать dateObj.wday для целочисленного значения дня недели и использовать его по своему усмотрению.

25 голосов
/ 28 октября 2010
time = Time.at(time)    # Convert number of seconds into Time object.
puts time.wday    # => 0: Day of week: 0 is Sunday
20 голосов
/ 25 декабря 2013
Date.today.strftime("%A")
=> "Wednesday"

Date.today.strftime("%A").downcase  
=> "wednesday"
7 голосов
/ 06 июня 2016

Быстрый, грязный и удобный для локализации:

days = {0 => "Sunday",
1 => "Monday", 
2 => "Tuesday",
3 => "Wednesday",
4 => "Thursday",
5 => "Friday",
6 => "Saturday"}

puts "It's #{days[Time.now.wday]}"
6 голосов
/ 23 июля 2015

Работает из коробки с рубином без необходимости:

Time.now.strftime("%A").downcase #=> "thursday"
5 голосов
/ 20 ноября 2012

Скажите, у меня есть date = Time.now.to_date, тогда date.strftime("%A") напечатает имя для дня недели, а для номера дня недели напишите date.wday.

5 голосов
/ 28 октября 2010

Как сказал @mway, вы можете использовать date.strftime ("% A") на любом объекте Date, чтобы получить день недели.

Если вам повезет, Date.parse может получить вас отСтрока с указанием дня недели за один раз:

def weekday(date_string)
  Date.parse(date_string).strftime("%A")
end

Это подходит для вашего теста:

weekday("October 28 of 2010") #=> "Thursday"
2 голосов
/ 28 октября 2010

В вашем объекте времени используйте свойство .wday, чтобы получить число, соответствующее дню недели, например, если .wday возвращает 0, тогда ваша дата - воскресенье, 1 понедельник и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...