far*_*din 3 ruby datetime ruby-on-rails weekday dayofweek
所以DateTime.current回报Fri, 11 Mar 2016 19:34:10 +0000.
我如何确定一周中的哪一天.例如,如果DateTime.current是星期五(只是星期几,不管日期)?
DateTime.current == DateTime.parse("Friday")不会起作用,因为DateTime.parse("Friday")退货Fri, 11 Mar 2016 00:00:00 +0000不一样.
如何检查日期或仅时间是否等于特定值?
提前致谢!
基本上我想看看DateTime.current是不是周末也不是公众假期,而且是在办公室工作时间之间
在Ruby 2.1.1中,Date类有一个friday?方法
如果日期是星期五,则返回true
首先,需要date图书馆
require 'date'
Run Code Online (Sandbox Code Playgroud)
然后使用当前日期创建一个新的日期实例.这是一个例子
current_time = Time.now
year = current_time.year
month = current_time.month
day = current_time.day
date = Date.new(year, month, day)
date.friday?
=> true
Run Code Online (Sandbox Code Playgroud)
根据您的编码偏好,您可以进一步干掉它
date = Date.new(Time.now.year, Time.now.month, Time.now.day)
=> #<Date: 2016-03-11 ((2457459j,0s,0n),+0s,2299161j)>
date.friday?
Run Code Online (Sandbox Code Playgroud)
如果你想在没有布尔方法的情况下解决这个问题(通常以问号结尾并返回true或者false),例如在与数据库列进行比较时,可以使用该Date#wday方法.请记住,这将返回范围(0..6)中的数字,0表示星期日.这意味着你要传入5来检查星期五.
if date.wday == 5
// Do something
end
Run Code Online (Sandbox Code Playgroud)
此外,如果您正在处理营业时间,那么使用business_timegem 可能最容易
你也可以加入holidays宝石business_time.
首先,安装宝石
gem install business_time
gem install holidays
Run Code Online (Sandbox Code Playgroud)
然后需要宝石
require 'business_time'
require 'holidays'
Run Code Online (Sandbox Code Playgroud)
了解今天是否是工作日
Date.today.workday?
Run Code Online (Sandbox Code Playgroud)
而且是个假期
你现在可以使用这样的东西来确定今天是否是假日
Holidays.on(date, :us).empty?
Run Code Online (Sandbox Code Playgroud)
在办公室工作时间之间
办公时间的定义因人而异.没有固定的答案.但是,使用business_timegem,您可以设置配置
BusinessTime::Config.beginning_of_workday = "8:30 am"
BusinessTime::Config.end_of_workday = "5:30 pm"
Run Code Online (Sandbox Code Playgroud)
来源
红宝石
http://ruby-doc.org/stdlib-2.1.1/libdoc/date/rdoc/Date.html#method-i-wday
http://ruby-doc.org/stdlib-2.1.1/libdoc/date/rdoc/Date.html#method-i-friday-3F
宝石
https://github.com/bokmann/business_time
https://github.com/holidays/holidays
| 归档时间: |
|
| 查看次数: |
3533 次 |
| 最近记录: |