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_time
gem 可能最容易
你也可以加入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_time
gem,您可以设置配置
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 次 |
最近记录: |