如何将日期字符串(即"Monday"
或"Wednesday"
)转换为相应的wday整数(1
或3
)?
我想出了这种复杂的方式
Date.today.beginning_of_week("Monday".downcase.to_sym).wday
答案 0 :(得分:5)
您可以使用strptime
对其进行解析:
Date.strptime('Monday', '%A').wday
#=> 1
Date.strptime('Wednesday', '%A').wday
#=> 3
中间日期对象引用当前星期中的工作日:
Date.today
#=> #<Date: 2018-11-20 ...>
Date.strptime('Monday', '%A')
#=> #<Date: 2018-11-19 ...>
您还可以使用_strptime
(带下划线前缀)提取单个工作日中恰好是:wday
的日期元素:
Date._strptime('Monday', '%A')
#=> {:wday=>1}
答案 1 :(得分:0)
您可以使用CHRONIC宝石。
Chronic是Tom编写的Ruby自然语言日期/时间解析器 Preston-Werner(@mojombo),它采用令人惊讶的人类可读文本 并将其转换为日期。 (http://robdodson.me/playing-with-ruby-dates/)
您可以这样使用:
require 'chronic'
Chronic.parse('Monday').wday
=> 1
希望对您有所帮助!