Как рассчитать день недели даты в ruby?


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

9 52

9 ответов:

я использовал это, потому что я ненавидел идти в Date docs, чтобы посмотреть синтаксис 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

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

Ну, я никогда не кодировал в ruby, но быстрый google дает

time = Time.at(time)    # Convert number of seconds into Time object.
puts time.wday    # => 0: Day of week: 0 is Sunday
Date.today.strftime("%A")
=> "Wednesday"

Date.today.strftime("%A").downcase  
=> "wednesday"

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

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

puts "It's #{days[Time.now.wday]}"

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

Time.now.strftime("%A").downcase #=> "thursday"

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

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

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

это работает для теста:

weekday("October 28 of 2010") #=> "Thursday"

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

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