如何计算红宝石中某一天的星期几?

Nis*_*nio 56 ruby date

如何计算红宝石中某一天的星期几?例如,2010年10月28日是=星期四

ste*_*lag 64

我使用过这个是因为我讨厌去找Date文档来查找strftime语法,而不是在那里找到它并且必须记住它是在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
Run Code Online (Sandbox Code Playgroud)

  • 将steenslag蒸馏到直接回答海报的一行:使用`Date :: ABBR_DAYNAMES [Date.today.wday]`.(您必须先包含Date库才能使用它:`require Date`.)选项:要显示全天名称而不是前三个字母,请使用"DAYNAMES"而不是"ABBR_DAYNAMES". (13认同)
  • 看起来Time类也有#wday方法,FWIW. (10认同)

mwa*_*way 61

看一下Date类引用.一旦你有了一个日期对象,你可以简单地做dateObj.strftime('%A')一整天或dateObj.strftime('%a')缩短的一天.您还可以使用dateObj.wday星期几的整数值,并根据需要使用它.

  • 如果你使用Rails,你会如何本地化? (3认同)

bri*_*n_d 27

好吧,我从来没有用红宝石编码,但快速google给出了

time = Time.at(time)    # Convert number of seconds into Time object.
puts time.wday    # => 0: Day of week: 0 is Sunday
Run Code Online (Sandbox Code Playgroud)

  • 还有`Time#cwday` 用于获取 1-7 范围内的日期。现在,这些方法也出现在 Date 类中(至少是 Ruby 2.3)。 (2认同)

Abh*_*bhi 20

Date.today.strftime("%A")
=> "Wednesday"

Date.today.strftime("%A").downcase  
=> "wednesday"
Run Code Online (Sandbox Code Playgroud)


And*_*röm 7

快速,肮脏和本地化友好:

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

puts "It's #{days[Time.now.wday]}"
Run Code Online (Sandbox Code Playgroud)


Nie*_*ian 6

使用红宝石开箱即可,无需:

Time.now.strftime("%A").downcase #=> "thursday"
Run Code Online (Sandbox Code Playgroud)


小智 5

正如@mway所说,您可以在任何Date对象上使用date.strftime(“%A”)来获取星期几。

如果幸运的话,您可以一口气Date.parse将您从String转到星期几:

def weekday(date_string)
  Date.parse(date_string).strftime("%A")
end
Run Code Online (Sandbox Code Playgroud)

这适用于您的测试用例:

weekday("October 28 of 2010") #=> "Thursday"
Run Code Online (Sandbox Code Playgroud)


Saq*_* R. 5

说我date = Time.now.to_date 然后date.strftime("%A")将打印星期几的名字,并写出星期几的数字date.wday