我已经为C#发布了这个问题,但我可能会在Ruby中工作.所以我问的是关于Ruby的同样问题:
我正在寻找一个类似于Perl模块的Ruby类/库/模块,Date::Manip就业务/假日日期而言.在Perl中使用该模块,我可以传递一个日期并查明它是一个工作日(即周一至周五)还是假日.在配置文件中定义假期非常简单(请参阅参考资料Date::Manip::Holidays).您可以输入适用于每年的"固定"日期,例如:
12/25 = Christmas
Run Code Online (Sandbox Code Playgroud)
或者每年的"动态"日期,如:
last Monday in May = Memorial Day
Run Code Online (Sandbox Code Playgroud)
或者给定年份的"固定"日期,如:
5/22/2010 = Bob's Wedding
Run Code Online (Sandbox Code Playgroud)
您还可以传递日期并返回下一个/上一个工作日(这不是周末而不是假期的任何一天).
有没有人知道Ruby世界中有类似的东西?
宝石应该可以满足您的需要。business_time
自述文件底部的示例是一个很好的起始示例:
require 'rubygems'
require 'active_support'
require 'business_time'
# We can adjust the start and end time of our business hours
BusinessTime::Config.beginning_of_workday = "8:30 am"
BusinessTime::Config.end_of_workday = "5:30 pm"
# and we can add holidays that don't count as business days
# July 5 in 2010 is a monday that the U.S. takes off because
# our independence day falls on that Sunday.
three_day_weekend = Date.parse("July 5th, 2010")
BusinessTime::Config.holidays << three_day_weekend
friday_afternoon = Time.parse("July 2nd, 2010, 4:50 pm")
tuesday_morning = 1.business_hour.after(friday_afternoon)
Run Code Online (Sandbox Code Playgroud)
您可能需要gem来帮助您从配置文件构建假期日期。但是 YMMV 因为您上周一的示例可能无法在. Hackaround 是做这样的事情:chronic chronic
# last monday in May (2010)
Chronic.parse('last monday', :now => Time.parse('2010-06-01'))
Run Code Online (Sandbox Code Playgroud)
看看在其之上工作的gem,以找到添加重复事件的方法。tickle chronic
/I3az/
| 归档时间: |
|
| 查看次数: |
5304 次 |
| 最近记录: |