Подтвердить что ты не робот

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

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

4b9b3361

Ответ 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 понедельник и т.д.