什么是 Carbon,为什么需要它?
Carbon 是一个强大且优雅的 PHP 库,它扩展了内置的 DateTime 类。如果你曾经用原生 PHP 处理过日期,你会知道标准的 DateTime 和 DateTimeImmutable 提供了基本功能,但它们的 API 通常冗长且不直观。Carbon 通过提供干净、可读且富有表现力的语法来解决这个问题,用于处理日期和时间。
为什么要使用 Carbon?想象一下,你需要:
- 在当前日期上增加 3 天:
$date->add(new DateInterval('P3D'))(原生 PHP) vs$date->addDays(3)(Carbon)。 - 获取两个日期之间的天数差:冗长的
DateTime::diff()加上后续格式化 vs$date1->diffInDays($date2)。 - 检查一个日期是否为周末:编写自己的逻辑 vs
$date->isWeekend()。
Carbon 不仅使代码更短,而且更易于理解。它被广泛用于现代 PHP 框架中,例如 Laravel(它是其中的标准)、Symfony、Yii 等。该库与原生 DateTime 完全兼容,这意味着你可以在任何期望 DateTime 的地方使用 Carbon。
Carbon 的主要优势:
- 富有表现力的语法:方法命名使其用途无需注释即可理解(
startOfDay()、endOfMonth()、isFuture())。 - 不可变性:支持
CarbonImmutable,用于安全地处理日期而不会产生副作用。 - 本地化:内置支持不同语言的日期格式化。
- 丰富的 API:数百种用于操作、比较、格式化和计算日期的方法。
- 直观的比较:像
isBefore()、isAfter()、isSameDay()这样的方法。
安装 Carbon
Carbon 通过 Composer 安装——PHP 的标准包管理器。如果你还没有 Composer,需要先安装它(参见 getcomposer.org)。
在项目根目录打开终端并执行命令:
composer require nesbot/carbon成功安装后,你的项目中会出现 vendor/ 文件夹和包含已添加依赖的 composer.json 文件。要在代码中使用 Carbon,需要引入 Composer 的自动加载器:
<?phprequire_once 'vendor/autoload.php';
use Carbon\\Carbon;
// 现在可以使用 Carbonecho Carbon::now(); // 2025-04-03 15:30:00?>重要提示: Carbon 需要 PHP 8.0 或更高版本(对于最新版本)。建议使用 PHP 8.1+。
快速入门与代码示例
让我们直接进入实践。以下是一些展示 Carbon 强大功能的简单示例:
<?phprequire_once 'vendor/autoload.php';use Carbon\\Carbon;
// 当前日期和时间$now = Carbon::now();echo "现在: " . $now . ""; // 2025-04-03 15:30:00
// 从字符串创建日期$birthday = Carbon::createFromDate(1990, 5, 15);echo "生日: " . $birthday->format('d.m.Y') . ""; // 15.05.1990
// 日期操作$tomorrow = Carbon::tomorrow();echo "明天: " . $tomorrow . "";
$nextWeek = Carbon::now()->addWeek();echo "一周后: " . $nextWeek . "";
// 日期之间的差异$age = $birthday->diffInYears(Carbon::now());echo "年龄: $age 岁"; // 34 或 35
// 条件检查$date = Carbon::parse('2025-12-25');if ($date->isChristmas()) { echo "这是圣诞节!";}
//