开源项目 working_hours
使用教程
项目介绍
working_hours
是一个现代的 Ruby gem,专门用于在工作时间内进行时间计算。它兼容并经过测试,支持 Ruby 2.7、3.0、3.1、3.2、3.3 以及 JRuby 9.4。此外,它还支持 ActiveSupport 5.x、6.x 和 7.x。
项目快速启动
安装
首先,在 Gemfile 中添加以下内容:
gem 'working_hours'
然后运行 bundle install
进行安装。
基本使用
以下是一个简单的示例,展示如何使用 working_hours
进行时间计算:
require 'working_hours'
# 配置工作时间
WorkingHours::Config.working_hours = {
mon: {'09:00' => '17:00'},
tue: {'09:00' => '17:00'},
wed: {'09:00' => '17:00'},
thu: {'09:00' => '17:00'},
fri: {'09:00' => '17:00'}
}
# 计算下一个工作时间
next_working_time = WorkingHours.next_working_time(Time.utc(2023, 10, 1))
puts next_working_time # => 2023-10-02 09:00:00 UTC
# 计算上一个工作时间
previous_working_time = WorkingHours.return_to_working_time(Time.utc(2023, 10, 1))
puts previous_working_time # => 2023-09-29 17:00:00 UTC
应用案例和最佳实践
案例一:计算两个日期之间的工作日
假设你需要计算两个日期之间的工作日数量:
friday = Date.new(2023, 10, 6)
monday = Date.new(2023, 10, 9)
working_days = WorkingHours.working_days_between(friday, monday)
puts working_days # => 1
案例二:计算未来某个工作时间
假设你需要计算从现在起 5 个工作日后的工作时间:
future_time = WorkingHours::Duration.new(5, :days).from_now
puts future_time # => 2023-10-13 09:00:00 UTC
典型生态项目
working_hours
可以与其他 Ruby 项目集成,例如与 Rails 项目结合使用,以确保所有时间计算都符合工作时间规则。以下是一个简单的 Rails 集成示例:
Rails 集成
在 config/initializers/working_hours.rb
中配置工作时间:
WorkingHours::Config.working_hours = {
mon: {'09:00' => '17:00'},
tue: {'09:00' => '17:00'},
wed: {'09:00' => '17:00'},
thu: {'09:00' => '17:00'},
fri: {'09:00' => '17:00'}
}
然后在模型或控制器中使用:
class Appointment < ApplicationRecord
def schedule_next_appointment
next_working_time = WorkingHours.next_working_time(self.end_time)
self.update(next_appointment_time: next_working_time)
end
end
通过这种方式,你可以确保所有预约时间都符合工作时间规则。