Carbon类库如何使用
先用composer安装:composer require nesbot/carbon
 
使用方法:
 
use Carbon\Carbon;
 
// 现在
$now = Carbon::now();
$today = Carbon::today();
 
// 指定日期
$date = Carbon::make('2023-10-01 15:30:00');
$date = new Carbon('first day of January 2024');
$date = Carbon::createFromFormat('Y/m/d', '2023/12/25');
 
// 解析自然语言(超级强大)
$date = Carbon::parse('next Tuesday 2pm');
$date = Carbon::parse('+3 weeks');
 
$date = Carbon::parse('2024-12-25');
 
// 比较
$date->isFuture(); // 是否未来
$date->isPast(); // 是否过去
$date->isWeekend(); // 是否周末
$date->isSameDay(Carbon::today()); // 是否同一天
 
// 经典比较方法
$birthday = Carbon::parse('1990-05-20');
$birthday->eq(Carbon::parse('1990-05-20')); // 等于 true
$birthday->gt(Carbon::parse('2000-01-01')); // 大于 false
$birthday->between($start, $end); // 是否在区间内
 
// 加减时间
$now = Carbon::now();
$now->addDays(7); // 加7天
$now->subMonths(2); // 减2个月
$now->addHours(5)->subMinutes(30); // 链式调用
 
// 更语义化的方法
$now->next(Carbon::FRIDAY); // 下个周五
$now->previous(Carbon::MONDAY); // 上个周一
 
// 调整到特定时间点
$now->startOfDay(); // 00:00:00
$now->endOfMonth(); // 月末最后时刻
$now->startOfWeek(); // 本周一
 
 
// 格式化输出
echo Carbon::now()->toDateTimeString(); // 2024-06-15 14:30:00
echo Carbon::now()->toDateString(); // 2024-06-15
echo Carbon::now()->format('Y年m月d日 H:i'); // 2024年06月15日 14:30
 
// 人性化差异(最受欢迎的功能!)
echo Carbon::parse('2024-06-10')->diffForHumans(); // 5天前
echo Carbon::now()->addDays(10)->diffForHumans(); // 10天后
echo Carbon::parse('1990-05-20')->diffForHumans(); // 34年前
 
// 精确差异
$start = Carbon::parse('2024-01-01');
$end = Carbon::parse('2024-06-15');
echo $start->diffInDays($end); // 166 (天数差)
echo $start->diffInMonths($end); // 5 (月数差)
 
// 生成本季度所有工作日的日期
$start = Carbon::now()->firstOfQuarter();
$end = Carbon::now()->lastOfQuarter();
 
while ($start->lte($end)) {
if ($start->isWeekday()) {
echo $start->toDateString() . "\n";
}
$start->addDay();
}
 
$deadline = Carbon::parse('2024-12-31 18:00:00');
$now = Carbon::now();
 
if ($now->gt($deadline)) {
echo "已过期 " . $now->diffForHumans($deadline) . "\n";
} elseif ($now->diffInDays($deadline) <= 7) {
echo "即将在 " . $now->diffForHumans($deadline) . " 截止\n";
} else {
echo "剩余 " . $now->diffInDays($deadline) . " 天\n";
}
 
// 设置为中文
Carbon::setLocale('zh');
 
echo Carbon::now()->subDays(2)->diffForHumans(); // 2天前
echo Carbon::now()->addHours(5)->diffForHumans(); // 5小时后
 
// 月份和星期名称本地化
echo Carbon::now()->locale('zh')->monthName; // 六月
echo Carbon::now()->locale('zh')->dayName; // 星期六
 
 
2025-12-19
浏览15
登录后评论
评论
分享