我们使用PHP时经常需要处理日期和时间,有时会被时间时区搞混淆,而Carbon是PHP中很人性化的时间日期处理组件,它继承自 PHP的DateTime 类的 API 扩展,使得处理日期和时间更加简单。
安装
可以通过 Composer 来安装 Carbon:composer require nesbot/carbon
Composer的安装和中国镜像的使用请参照:http://www.phpcomposer.com/
使用
我们通过命名空间导入 Carbon 来使用,而不需每次都提供完整的名称。<?php
require "vendor/autoload.php";
use CarbonCarbon;
Carbon提供了许多处理日期和时间的方法,可以满足各种业务需求,以下列出我们常用的处理日期和时间的方法:
1.获取当前时间<?php
$dt = Carbon::now();
$dt->timezone = "Asia/Shanghai";
echo $dt; // 2017-10-10 13:02:09
2.昨天、今天、明天<?php
$dt = Carbon::now();
$dt->timezone = "Asia/Shanghai";
echo "昨天: ".$dt->yesterday(); // 昨天: 2017-10-09 00:00:00
echo "今天: ".$dt->today(); // 今天: 2017-10-10 00:00:00
echo "明天: ".$dt->tomorrow(); // 明天: 2017-10-11 00:00:00
3.2017年10月最后一天<?php
echo new Carbon("last day of October 2017"); // 2017-10-31 00:00:00
4.一周前<?php
echo $dt->subWeek(); // 2017-10-03 13:02:09
5.30天后<?php
$dt = Carbon::now();
$dt->timezone = "Asia/Shanghai";
echo $dt->addDay(30); // 2017-11-09 13:02:09
6.计算年龄(出生于1982-12-12)<?php
$howOldAmI = Carbon::createFromDate(1982, 12, 12)->age;
echo $howOldAmI . "岁"; // 34岁
7.只显示日期<?php
echo Carbon::now()->toDateString(); // 2017-10-10
8.显示国际时间<?php
echo Carbon::now("Europe/London"); // 伦敦时间:2017-10-10 06:02:09
echo Carbon::now("Europe/Paris"); // 巴黎时间:2017-10-10 07:02:09
echo Carbon::now("Asia/Shanghai"); // 北京时间:2017-10-10 13:02:09
echo Carbon::now("America/Vancouver"); // 温哥华时间:2017-10-09 22:02:09
9.2小时后<?php
echo Carbon::now("Asia/Shanghai")->addHours(2); // 2017-10-10 15:02:09
10.显示当前时间戳<?php
echo Carbon::now()->timestamp; // 1507611729
11.人性化显示时间<?php
$ts = Carbon::yesterday()->timestamp;
echo Carbon::createFromTimestamp($ts)->diffForHumans(); // 1天前
Carbon有点类似javascript的moment.js,它继承了PHP的 Datetime 类,所以 Carbon 中没有涉及到的,但在 Datetime 中已经实现的方法都是可以使用的。使用Carbon后你会发现处理日期和时间非常灵活,也非常人性化。
更多有关Carbon的用法请参照Carbon在github上的地址: http://carbon.nesbot.com/docs/