开源项目 `working_hours` 使用教程

开源项目 working_hours 使用教程

working_hours⏰ A modern ruby gem allowing to do time calculation with business / working hours.项目地址:https://gitcode.com/gh_mirrors/wo/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

通过这种方式,你可以确保所有预约时间都符合工作时间规则。

working_hours⏰ A modern ruby gem allowing to do time calculation with business / working hours.项目地址:https://gitcode.com/gh_mirrors/wo/working_hours

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

罗蒙霁Ella

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值