Rails - 确定星期几
Rails - Determine the day of the week
所以DateTime.current
returnsFri, 11 Mar 2016 19:34:10 +0000
.
如何确定星期几。例如,如果 DateTime.current
是星期五(只是星期几,与日期无关)?
DateTime.current == DateTime.parse("Friday")
不会工作,因为 DateTime.parse("Friday")
returns Fri, 11 Mar 2016 00:00:00 +0000
不一样。
如何检查是否只有日期或时间等于特定值?
提前致谢!
基本上我想看看DateTime.current
是不是周末也不是public假期,是不是上班时间
在 Ruby 2.1.1 中,日期 class 有一个 friday?
方法
Returns true if the date is a friday
首先,需要 date
库
require 'date'
然后用当前日期创建一个新的日期实例。这是一个例子
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
根据您的编码偏好,您可以将其进一步干燥
date = Date.new(Time.now.year, Time.now.month, Time.now.day)
=> #<Date: 2016-03-11 ((2457459j,0s,0n),+0s,2299161j)>
date.friday?
如果您想不用布尔方法解决这个问题,(通常以问号和 return true
或 false
结尾的方法),例如与数据库列进行比较时,可以使用 Date#wday
方法。请记住,这个 return 是 (0..6) 范围内的一个数字,其中 0 代表星期日。这意味着您要传入 5 以检查星期五。
if date.wday == 5
// Do something
end
此外,如果您在上班时间工作,使用 business_time
gem
可能最简单
您还可以将 holidays
gem 包含在 business_time
中。
首先,安装 gems
gem install business_time
gem install holidays
然后要求 gem
require 'business_time'
require 'holidays'
查看今天是否是工作日
Date.today.workday?
and is a holiday
您现在可以使用类似这样的方法来确定今天是否是假期
Holidays.on(date, :us).empty?
and is between office working hours
办公时间的定义因人而异。没有一成不变的答案。但是,使用 business_time
gem,您可以设置配置
BusinessTime::Config.beginning_of_workday = "8:30 am"
BusinessTime::Config.end_of_workday = "5:30 pm"
来源
Ruby
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
宝石
检查这个-
require 'date'
today = DateTime.current.to_date
if today.Friday?
puts "Today is a Friday!"
end
您可以使用如下内容:
day = DateTime.now.strftime("%A")
这将 return 全名大写的星期几。你也可以得到这样的缩写:
day = DateTime.now.strftime("%a")
您还可以使用 %u 或 %w 将星期几作为整数获取。星期五是 5.
DateTime.now.strftime("%u") == 5 # True if Friday
您可以在此处查看更多功能:
所以DateTime.current
returnsFri, 11 Mar 2016 19:34:10 +0000
.
如何确定星期几。例如,如果 DateTime.current
是星期五(只是星期几,与日期无关)?
DateTime.current == DateTime.parse("Friday")
不会工作,因为 DateTime.parse("Friday")
returns Fri, 11 Mar 2016 00:00:00 +0000
不一样。
如何检查是否只有日期或时间等于特定值?
提前致谢!
基本上我想看看DateTime.current
是不是周末也不是public假期,是不是上班时间
在 Ruby 2.1.1 中,日期 class 有一个 friday?
方法
Returns true if the date is a friday
首先,需要 date
库
require 'date'
然后用当前日期创建一个新的日期实例。这是一个例子
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
根据您的编码偏好,您可以将其进一步干燥
date = Date.new(Time.now.year, Time.now.month, Time.now.day)
=> #<Date: 2016-03-11 ((2457459j,0s,0n),+0s,2299161j)>
date.friday?
如果您想不用布尔方法解决这个问题,(通常以问号和 return true
或 false
结尾的方法),例如与数据库列进行比较时,可以使用 Date#wday
方法。请记住,这个 return 是 (0..6) 范围内的一个数字,其中 0 代表星期日。这意味着您要传入 5 以检查星期五。
if date.wday == 5
// Do something
end
此外,如果您在上班时间工作,使用 business_time
gem
您还可以将 holidays
gem 包含在 business_time
中。
首先,安装 gems
gem install business_time
gem install holidays
然后要求 gem
require 'business_time'
require 'holidays'
查看今天是否是工作日
Date.today.workday?
and is a holiday
您现在可以使用类似这样的方法来确定今天是否是假期
Holidays.on(date, :us).empty?
and is between office working hours
办公时间的定义因人而异。没有一成不变的答案。但是,使用 business_time
gem,您可以设置配置
BusinessTime::Config.beginning_of_workday = "8:30 am"
BusinessTime::Config.end_of_workday = "5:30 pm"
来源
Ruby
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
宝石
检查这个-
require 'date'
today = DateTime.current.to_date
if today.Friday?
puts "Today is a Friday!"
end
您可以使用如下内容:
day = DateTime.now.strftime("%A")
这将 return 全名大写的星期几。你也可以得到这样的缩写:
day = DateTime.now.strftime("%a")
您还可以使用 %u 或 %w 将星期几作为整数获取。星期五是 5.
DateTime.now.strftime("%u") == 5 # True if Friday
您可以在此处查看更多功能: