boxmoe_header_banner_img

Hello! 欢迎来到悠悠畅享网!

文章导读

使用cmixin/business-time轻松处理Carbon的工作时间和节假日


avatar
作者 2025年8月24日 19

在日常开发中,经常遇到需要处理工作日和营业时间的需求。例如,计算一个任务的截止日期,需要排除周末和节假日;或者需要判断当前时间是否在营业时间内。这些看似简单的需求,如果手动实现,往往需要编写大量的代码,并且容易出错。

cmixin/business-time

是一个 carbon 的 mixin,它提供了一系列方便的方法来处理工作日、营业时间和节假日。通过使用

cmixin/business-time

,可以轻松地实现这些功能,大大简化了代码,提高了开发效率。

composer在线学习地址:学习地址

实际问题

假设你需要开发一个在线预约系统,该系统需要:

  • 只允许在工作日进行预约。
  • 预约时间必须在营业时间内。
  • 需要排除节假日。

如果没有

cmixin/business-time

,你需要编写大量的代码来判断日期是否是工作日,时间是否在营业时间内,以及是否是节假日。这不仅耗时,而且容易出错。

使用

cmixin/business-time

解决问题

  1. 安装

    cmixin/business-time

    <pre class="brush:php;toolbar:false;">composer require cmixin/business-time
  2. 启用

    BusinessTime

    mixin:

    在应用的启动文件中(例如 laravel

    app/Providers/AppServiceProvider.php

    )添加以下代码:

    <pre class="brush:php;toolbar:false;"><?php  use CarbonCarbon; use CmixinBusinessTime;  BusinessTime::enable(Carbon::class, [     'monday' => ['09:00-12:00', '13:00-18:00'],     'tuesday' => ['09:00-12:00', '13:00-18:00'],     'wednesday' => ['09:00-12:00'],     'thursday' => ['09:00-12:00', '13:00-18:00'],     'friday' => ['09:00-12:00', '13:00-20:00'],     'saturday' => ['09:00-12:00', '13:00-16:00'],     'sunday' => [],     'exceptions' => [         '2023-12-25' => [], // 圣诞节关闭         '01-01' => [], // 元旦关闭     ],     'holidaysAreClosed' => true, // 默认节假日关闭     'holidays' => [         'region' => 'cn-national', // 使用中国国家节假日     ], ]);

    这段代码启用了

    BusinessTime

    mixin,并设置了默认的营业时间和节假日。

  3. 使用

    BusinessTime

    提供的方法:

    <pre class="brush:php;toolbar:false;">use CarbonCarbon;  $appointmentTime = Carbon::parse('2024-01-01 10:00');  if ($appointmentTime->isBusinessDay() && $appointmentTime->isOpen()) {     echo "预约时间可用"; } else {     echo "预约时间不可用"; }

    这段代码使用

    isBusinessDay()

    方法判断是否是工作日,使用

    isOpen()

    方法判断是否在营业时间内。

cmixin/business-time

的优势

  • 简化代码: 提供了大量便捷的方法,避免了手动编写大量代码。
  • 提高效率: 内部进行了优化,提高了时间处理的效率。
  • 可配置性: 提供了灵活的配置选项,可以根据实际需求进行定制。
  • 易于使用: 与 Carbon 无缝集成,使用方式与 Carbon 类似,易于上手。

实际应用效果

使用

cmixin/business-time

后,在线预约系统的代码量大大减少,代码可读性也得到了提高。同时,由于

cmixin/business-time

内部进行了优化,时间处理的效率也得到了提高,提升了用户体验。

总之,

cmixin/business-time

是一个非常实用的 Carbon 扩展,它可以帮助开发者轻松地处理工作日、营业时间和节假日,提高开发效率,提升用户体验。如果你需要在 PHP 项目中处理时间相关的业务逻辑,不妨尝试一下

cmixin/business-time



评论(已关闭)

评论已关闭

text=ZqhQzanResources