chen-ht12306/chronos
Composer 安装命令:
composer require chen-ht12306/chronos
包简介
一个优雅的 PHP 日期时间处理库,类似 Carbon,提供链式调用和丰富的时间操作方法
README 文档
README
一个优雅的 PHP 日期时间处理库,类似 Carbon,提供链式调用和丰富的时间操作方法。
特性
- ✨ 链式调用 API
- 🕐 完整的时区支持
- 📅 丰富的日期时间操作方法
- 🔄 日期比较和差异计算
- 🌐 中文本地化支持
- 📦 Laravel 原生集成
- 🧪 测试辅助功能
安装
composer require your-vendor/chronos
Laravel 集成
注册服务提供者
在 config/app.php 中添加:
'providers' => [ // ... Chronos\ChronosServiceProvider::class, ], 'aliases' => [ // ... 'Chronos' => Chronos\Facades\Chronos::class, ],
发布配置文件
php artisan vendor:publish --tag=chronos-config
快速开始
基本使用
use Chronos\Chronos; // 获取当前时间 $now = Chronos::now(); // 创建指定日期 $date = Chronos::create(2024, 6, 15, 12, 30, 45); // 从字符串解析 $date = Chronos::parse('2024-06-15 12:30:45'); // 从格式创建 $date = Chronos::createFromFormat('Y-m-d', '2024-06-15');
日期操作
$date = Chronos::now(); // 添加时间 $date->addDays(5); // 添加5天 $date->addMonths(1); // 添加1个月 $date->addYears(2); // 添加2年 $date->addHours(3); // 添加3小时 $date->addMinutes(30); // 添加30分钟 $date->addSeconds(60); // 添加60秒 // 链式调用 $date = Chronos::now() ->addDays(5) ->addHours(3) ->startOfDay(); // 月初/月末 $date->startOfMonth(); // 月初 $date->endOfMonth(); // 月末 // 年初/年末 $date->startOfYear(); // 年初 $date->endOfYear(); // 年末 // 季度 $date->startOfQuarter(); // 季度初 $date->endOfQuarter(); // 季度末 // 周初/周末 $date->startOfWeek(); // 周初 (周一) $date->endOfWeek(); // 周末 (周日)
日期比较
$date1 = Chronos::create(2024, 6, 15); $date2 = Chronos::create(2024, 6, 20); // 比较方法 $date1->equalTo($date2); // 是否相等 $date1->greaterThan($date2); // 是否大于 $date1->lessThan($date2); // 是否小于 $date1->between($date2, $date3); // 是否在两个日期之间 // 便捷方法 $date->isToday(); // 是否今天 $date->isTomorrow(); // 是否明天 $date->isYesterday(); // 是否昨天 $date->isWeekend(); // 是否周末 $date->isWeekday(); // 是否工作日 $date->isFuture(); // 是否未来 $date->isPast(); // 是否过去 $date->isLeapYear(); // 是否闰年
日期差异
$date1 = Chronos::create(2024, 6, 15); $date2 = Chronos::create(2024, 6, 20); // 获取差异 $date2->diffInDays($date1); // 天数差异 $date2->diffInHours($date1); // 小时差异 $date2->diffInMinutes($date1); // 分钟差异 $date2->diffInSeconds($date1); // 秒数差异 $date2->diffInWeeks($date1); // 周数差异 $date2->diffInMonths($date1); // 月数差异 $date2->diffInYears($date1); // 年数差异 // 人类可读格式 $date->diffForHumans(); // "3天前" / "2小时后"
格式化输出
$date = Chronos::create(2024, 6, 15, 12, 30, 45); // 标准格式 $date->toDateString(); // "2024-06-15" $date->toTimeString(); // "12:30:45" $date->toDateTimeString(); // "2024-06-15 12:30:45" // 友好格式 $date->toFormattedDateString(); // "Jun 15, 2024" $date->toLongDateString(); // "June 15, 2024" $date->toLongTimeString(); // "12:30:45 PM" // 中文格式 $date->toCnDateString(); // "2024年06月15日" $date->toCnDateTimeString(); // "2024年06月15日 12:30:45" $date->toCnDateStringWithDay(); // "2024年06月15日 星期六" // 自定义格式 $date->format('Y年m月d日 H:i:s'); // "2024年06月15日 12:30:45" $date->format('Y/m/d'); // "2024/06/15"
中文支持
$date = Chronos::create(2024, 6, 15); // 中文月份和星期 $date->monthNameCn(); // "六月" $date->dayNameCn(); // "星期六" $date->shortDayNameCn(); // "周六" // 中文日期 $date->toCnDateString(); // "2024年06月15日" $date->toCnDateTimeString(); // "2024年06月15日 12:30:45" $date->toCnDateStringWithDay(); // "2024年06月15日 星期六" $date->toCnShortDateString(); // "06/15 周六" // 中文相对时间 $date->diffForHumansCn(); // "3天前" / "2小时后"
时区处理
$date = Chronos::create(2024, 6, 15, 12, 0, 0, 'UTC'); // 设置时区 $tokyo = $date->setTimezone('Asia/Tokyo'); // 转换为 UTC $utc = $date->toUtc(); // 获取时区信息 $date->tzName(); // 时区名称 $date->offset(); // UTC 偏移秒数
获取日期组件
$date = Chronos::create(2024, 6, 15, 12, 30, 45); $date->year(); // 2024 $date->month(); // 6 $date->day(); // 15 $date->hour(); // 12 $date->minute(); // 30 $date->second(); // 45 $date->dayOfWeek(); // 0 (周日) - 6 (周六) $date->dayOfYear(); // 167 $date->quarter(); // 2 $date->daysInMonth(); // 30 $date->dayName(); // "Saturday" $date->monthName(); // "June" $date->timestamp(); // Unix 时间戳
测试支持
use Chronos\Chronos; // 设置测试时间 Chronos::setTestNow('2024-06-15 12:00:00'); // 之后调用 now() 会返回测试时间 $now = Chronos::now(); // 2024-06-15 12:00:00 // 清除测试时间 Chronos::clearTestNow();
转换为其他类型
$date = Chronos::create(2024, 6, 15, 12, 30, 45); // 转换为数组 $date->toArray(); // 转换为 Carbon (需要安装 carbon) $carbon = $date->toCarbon(); // 转换为 DateTime $dateTime = $date->toDateTime(); // 转换为 DateTimeImmutable $dateTimeImmutable = $date->toDateTimeImmutable(); // 转换为时间戳 $timestamp = $date->timestamp();
API 文档
静态工厂方法
| 方法 | 描述 |
|---|---|
now($tz) |
获取当前时间 |
today($tz) |
获取今天的日期 |
tomorrow($tz) |
获取明天的日期 |
yesterday($tz) |
获取昨天的日期 |
create($y, $m, $d, $h, $i, $s, $tz) |
创建指定日期 |
parse($time, $tz) |
解析日期字符串 |
createFromFormat($format, $time, $tz) |
从格式创建 |
createFromTimestamp($timestamp, $tz) |
从时间戳创建 |
实例方法
修改方法
| 方法 | 描述 |
|---|---|
addDays($n) |
添加 n 天 |
subDays($n) |
减去 n 天 |
addMonths($n) |
添加 n 月 |
subMonths($n) |
减去 n 月 |
addYears($n) |
添加 n 年 |
subYears($n) |
减去 n 年 |
addHours($n) |
添加 n 小时 |
subHours($n) |
减去 n 小时 |
startOfDay() |
一天开始 |
endOfDay() |
一天结束 |
startOfMonth() |
月初 |
endOfMonth() |
月末 |
startOfYear() |
年初 |
endOfYear() |
年末 |
setTimezone($tz) |
设置时区 |
比较方法
| 方法 | 描述 |
|---|---|
equalTo($date) |
是否等于 |
greaterThan($date) |
是否大于 |
lessThan($date) |
是否小于 |
isToday() |
是否今天 |
isTomorrow() |
是否明天 |
isYesterday() |
是否昨天 |
isWeekend() |
是否周末 |
isLeapYear() |
是否闰年 |
diffInDays($date) |
天数差异 |
格式化方法
| 方法 | 描述 |
|---|---|
format($format) |
自定义格式 |
toDateString() |
Y-m-d |
toTimeString() |
H:i:s |
toDateTimeString() |
Y-m-d H:i:s |
toCnDateString() |
中文日期 |
toAtomString() |
ATOM 格式 |
配置
发布配置文件后,可以在 config/chronos.php 中修改:
return [ // 默认时区 'timezone' => env('CHRONOS_TIMEZONE', null), // 默认语言 'locale' => env('CHRONOS_LOCALE', 'zh_CN'), ];
贡献
欢迎提交 Issue 和 Pull Request!
许可证
MIT License
chen-ht12306/chronos 适用场景与选型建议
chen-ht12306/chronos 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 04 月 01 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「time」 「date」 「laravel」 「timezone」 「datetime」 「timestamp」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 chen-ht12306/chronos 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 chen-ht12306/chronos 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 chen-ht12306/chronos 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Tools to convert between .NET and PHP date formats
Adds the EDTF data type to Wikibase
A powerful event calendar Tool for Laravel's Nova 5.
Date component is a set of methods to help with the manipulation of dates.
Bureaux A Partager Edit - Parse, validate, manipulate, and display dates in PHP w/ i18n support. Inspired by moment.js
Delayed Process For Laravel.
统计信息
- 总下载量: 2
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 33
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-04-01