Carbon常用语句
1 本地化
\Carbon\Carbon::setLocale('zh');
2 常用语句
use Carbon\Carbon; // Carbon 类在 Carbon 命名空间中声明
// 获取当前时间
echo Carbon::now(); // 2017-04-07 16:32:28
// 今天
echo Carbon::today(); // 2017-04-07 00:00:00
// 明天
echo Carbon::tomorrow(); // 2017-04-08 00:00:00
// 昨天
echo Carbon::yesterday(); // 2017-04-06 00:00:00
// 获取前一天的开始时间
echo Carbon::now()->yesterday()->startOfDay(); // 2017-04-06 00:00:00
// 获取前一天的结束时间
echo Carbon::now()->yesterday()->endOfDay(); // 2017-04-06 23:59:59
//上一周开始时间 (星期一)
echo Carbon::now()->previous()->startOfWeek(); // 2017-03-27 00:00:00
// 这周周一
echo Carbon::now()->startOfWeek(); // 2017-04-03 00:00:00
//上一周结束时间 (星期天)
echo Carbon::now()->previous()->endOfWeek(); // 2017-04-02 23:59:59
// 这周周天
echo Carbon::now()->endOfWeek(); // 2017-04-09 23:59:59
//获取上一月的开始时间
echo Carbon::now()->subMonth(1)->startOfMonth(); // 2017-03-01 00:00:00
// 获取上一月的结束时间
echo Carbon::now()->subMonth(1)->endOfMonth(); // 2017-03-31 23:59:59
// 这个月的第一天开始时间
echo Carbon::now()->startOfMonth(); // 2017-04-01 00:00:00
// 这个月的最后一天结束时间
echo Carbon::now()->endOfMonth(); // 2017-04-30 23:59:59
// 获取上一年的开始时间
echo Carbon::now()->subYear(1)->startOfYear(); // 2016-01-01 00:00:00
// 今年开始时间
echo Carbon::now()->startOfYear(); // 2017-01-01 00:00:00
echo Carbon::now()->lastOfYear()->startOfYear(); // 2017-01-01 00:00:00
// 获取上一年的结束时间
echo Carbon::now()->subYear(1)->endOfYear(); // 2016-12-31 23:59:59
// 今年结束时间
echo Carbon::now()->endOfYear(); // 2017-12-31 23:59:59
echo Carbon::now()->lastOfYear()->endOfYear(); // 2017-12-31 23:59:59
// 获取当前时间的固定格式
echo Carbon::now()->format('Y-m-d'); // 2017-04-07
// 几号
echo Carbon::now()->day; // 7
// 几月
echo Carbon::now()->month; // 4
// 年
echo Carbon::now()->year; // 2017
// 小时
echo Carbon::now()->hour;
// 分钟
echo Carbon::now()->minute;
// 上周的今天是星期几
echo Carbon::now()->dayOfWeek; // 5
// 今天是365天中的第几天
echo Carbon::now()->dayOfYear; // 96
// 这个月中的第几周
echo Carbon::now()->weekOfMonth; // 1
// 年中的第几周
echo Carbon::now()->weekOfYear; // 14
// 季度
echo Carbon::now()->quarter; // 2
// 几岁
echo Carbon::createFromDate(1991, 5, 21)->age; // 25
// 这个月有几天
echo Carbon::now()->daysInMonth; // 30
var_dump(isset(Carbon::now()->hour)); // bool(true)
var_dump(empty(Carbon::now()->year)); // bool(false)
echo Carbon::now()->year(2017)->month(5)->day(21)->hour(22)->minute(32)->second(5)->toDateTimeString(); // 2017-05-21 22:32:05
echo Carbon::now()->setDate(2017, 5, 21)->setTime(22, 32, 5)->toDateTimeString(); // 2017-05-21 22:32:05
echo Carbon::now()->setDateTime(2017, 5, 21, 22, 32, 5)->toDateTimeString(); // 2017-05-21 22:32:05
// 日期解析
echo new Carbon('now');
echo Carbon::parse('now'); // 2017-04-07 17:54:35
echo Carbon::parse('today'); // 2017-04-07 00:00:00
echo Carbon::parse('yesterday'); // 2017-04-06 00:00:00
echo Carbon::parse('2 days ago'); // 2017-04-05 17:56:28
echo Carbon::parse('+3 days'); // 2017-04-10 17:57:14
echo Carbon::parse('-3 days'); // 2017-04-04 17:57:37
echo Carbon::parse('+2 weeks'); // 2017-04-21 17:58:05
echo Carbon::parse('+4 months'); // 2017-08-07 17:58:32
echo Carbon::parse('-1 year'); // 2016-04-07 17:58:56
echo Carbon::parse('next wednesday'); // 2017-04-12 00:00:00
echo Carbon::parse('last friday'); // 2017-03-31 00:00:00
// 将carbon对象转换成string类型
echo Carbon::createFromTimestamp(-1)->toDateTimeString(); // 1970-01-01 07:59:59
echo Carbon::now()->toDateString(); // 2017-04-07
echo Carbon::now()->toDateTimeString(); // 2017-04-07 16:53:28
echo Carbon::now()->toFormattedDateString(); // Apr 7, 2017
echo Carbon::now()->toTimeString(); // 18:04:00
echo Carbon::now()->toDayDateTimeString(); // Fri, Apr 7, 2017 6:04 PM
// 获取当前时间的时间戳
echo Carbon::now()->timestamp; // 1491554091
echo Carbon::now()->timestamp(1491554091)->toDateTimeString(); // 2017-04-07 16:34:51
// 设置当前地区的时区
echo Carbon::now()->timezone('Asia/Shanghai'); // 2017-04-07 16:35:35
// 直接使用字符串
echo Carbon::now('Europe/London'); // 2017-04-07 09:36:41
// createFromDate()将默认的时间到现在。 createFromTime()将日期默认为今天。
echo Carbon::createFromDate(2018, 1, 1, 'Europe/London'); // 2018-01-01 16:39:40
echo Carbon::createFromFormat('Y-m-d H', '1975-05-21 22')->toDateTimeString(); // 1975-05-21 22:00:00
echo Carbon::createFromFormat('Y-m-d H', '1975-05-21 22'); // 1975-05-21 22:00:00
// create()将默认任何null参数到当前相应的值
echo Carbon::create(2000, 1, 1, 0, 0, 0); // 2000-01-01 00:00:00
// 日期比较
echo Carbon::now()->tzName; // PRC
$first = Carbon::create(2017, 4, 10, 11, 26, 30);
$second = Carbon::create(2017, 4, 10, 11, 26, 30, 'Asia/Shanghai');
echo $first->toDateTimeString(); // 2017-04-10 11:26:30
echo $first->tzName; // PRC
echo $second->toDateTimeString(); // 2017-04-10 11:26:30
echo $second->tzName; // Asia/Shanghai
// 判断两个日期是否相等
var_dump($first->eq($second)); // bool(true)
// 判断第一个日期是否不等于第二个日期
var_dump($first->ne($second)); // bool(false)
// 判断第一个日期是否比第二个日期大
var_dump($first->gt($second)); // bool(false)
// 判断第一个日期是否大于等于第二个日期
var_dump($first->gte($second)); // bool(true)
// 判断第一个日期是否比第二个日期小
var_dump($first->lt($second)); // bool(false)
// 判断第一个日期是否小于等于第二个日期
var_dump($first->lte($second)); // bool(true)
// 设置日期和时间
$first->setDateTime(2017, 1, 1, 0, 0, 0);
$second->setDateTime(2017, 1, 1, 0, 0, 0);
var_dump($first->eq($second)); // bool(true)
var_dump($first->ne($second)); // bool(false)
var_dump($first->gt($second)); // bool(false)
var_dump($first->gte($second)); // bool(true)
var_dump($first->lt($second)); // bool(false)
var_dump($first->lte($second)); // bool(true)
// 要判断一个日期是否介于两个日期之间,可以使用 between() 方法,第三个可选参数指定比较是否可以相等,默认为 true
$first = Carbon::create(2012, 9, 5, 1);
$second = Carbon::create(2012, 9, 5, 5);
var_dump(Carbon::create(2012, 9, 5, 3)->between($first, $second)); // bool(true)
var_dump(Carbon::create(2012, 9, 5, 5)->between($first, $second)); // bool(true)
var_dump(Carbon::create(2012, 9, 5, 5)->between($first, $second, false)); // bool(false)
$dt1 = Carbon::create(2012, 1, 1, 0, 0, 0);
$dt2 = Carbon::create(2014, 1, 30, 0, 0, 0);
// 返回最小日期
echo $dt1->min($dt2); // 2012-01-01 00:00:00
$dt1 = Carbon::create(2012, 1, 1, 0, 0, 0);
$dt2 = Carbon::create(2014, 1, 30, 0, 0, 0);
// 返回最大日期
echo $dt1->max($dt2); // 2014-01-30 00:00:00
// now is the default param
$dt1 = Carbon::create(2000, 1, 1, 0, 0, 0);
echo $dt1->max(); // 2017-04-10 11:51:23
$dt = Carbon::now();
// 确定实例是一个工作日
$dt->isWeekday();
// 确定实例是周末的一天
$dt->isWeekend();
$dt->isYesterday();
$dt->isToday();
$dt->isTomorrow();
// 是否比现在的时间大
$dt->isFuture();
// 是否比现在的时间小
$dt->isPast();
// 确定实例是闰年
$dt->isLeapYear();
// 检查传入日期是同一天的当前实例
$dt->isSameDay(Carbon::now());
$born = Carbon::createFromDate(1987, 4, 23);
$noCake = Carbon::createFromDate(2014, 9, 26);
$yesCake = Carbon::createFromDate(2014, 4, 23);
$overTheHill = Carbon::now()->subYears(50);
// 检查它的生日。比较两个日期的日期
var_dump($born->isBirthday($noCake)); // bool(false)
var_dump($born->isBirthday($yesCake)); // bool(true)
var_dump($overTheHill->isBirthday()); // bool(true) -> default compare it to today!
// 日期操作
// add(增加), sub(减去)
$dt = Carbon::create(2017, 4, 10, 0);
echo $dt->toDateTimeString(); // 2017-04-10 00:00:00
echo $dt->addYears(5); // 2022-04-10 00:00:00
echo $dt->addYear(); // 2023-04-10 00:00:00
echo $dt->subYear(); // 2022-04-10 00:00:00
echo $dt->subYears(5); // 2017-04-10 00:00:00
echo $dt->addMonths(6); // 2017-10-10 00:00:00
echo $dt->addMonth(); // 2017-11-10 00:00:00 equivalent of $dt->month($dt->month + 1); so it wraps
echo $dt->subMonth(); // 2017-10-10 00:00:00
echo $dt->subMonths(6); // 2017-04-10 00:00:00
echo $dt->addDays(5); // 2017-04-15 00:00:00
echo $dt->addDay(); // 2017-04-16 00:00:00
echo $dt->subDay(); // 2017-04-15 00:00:00
echo $dt->subDays(5); // 2017-04-10 00:00:00
echo $dt->addWeekdays(4); // 2017-04-14 00:00:00
echo $dt->addWeekday(); // 2017-04-17 00:00:00
echo $dt->subWeekday(); // 2017-04-14 00:00:00
echo $dt->subWeekdays(4); // 2017-04-10 00:00:00
echo $dt->addWeeks(1); // 2017-04-17 00:00:00
echo $dt->addWeek(); // 2017-04-24 00:00:00
echo $dt->subWeek(); // 2017-04-17 00:00:00
echo $dt->subWeeks(1); // 2017-04-10 00:00:00
echo $dt->addHours(24); // 2017-04-11 00:00:00
echo $dt->addHour(); // 2017-04-11 01:00:00
echo $dt->subHour(); // 2017-04-11 00:00:00
echo $dt->subHours(24); // 2017-04-10 00:00:00
echo $dt->addMinutes(61); // 2017-04-10 01:01:00
echo $dt->addMinute(); // 2017-04-10 01:02:00
echo $dt->subMinute(); // 2017-04-10 01:01:00
echo $dt->subMinutes(61); // 2017-04-10 00:00:00
echo $dt->addSeconds(61); // 2017-04-10 00:01:01
echo $dt->addSecond(); // 2017-04-10 00:01:02
echo $dt->subSecond(); // 2017-04-10 00:01:01
echo $dt->subSeconds(61); // 2017-04-10 00:00:00
// modify 方法,参数格式为 + 或 - 跟上值及单位
echo Carbon::now()->modify('+15 days'); // 2017-04-25 12:26:02
echo Carbon::now()->modify('-2 days'); // 2017-04-08 12:26:02
echo Carbon::now()->modify('-2 day'); // 2017-04-08 12:28:31
echo Carbon::now()->modify('-2 weekday'); // 2017-04-06 00:00:00
echo Carbon::now()->modify('-2 month'); // 2017-02-10 12:29:36
echo Carbon::now()->modify('-2 year'); // 2015-04-10 12:31:13
echo Carbon::now()->modify('-2 week'); // 2017-03-27 12:31:13
echo Carbon::now()->modify('-2 hour'); // 2017-04-10 10:31:13
echo Carbon::now()->modify('-2 minute'); // 2017-04-10 12:29:13
echo Carbon::now()->modify('-2 second'); // 2017-04-10 12:31:11
echo Carbon::now()->subDays(5)->diffForHumans(); // 5天前
echo Carbon::now()->diffForHumans(Carbon::now()->subYear()); // 1年后
$dt = Carbon::createFromDate(2017, 4, 1);
echo $dt->diffForHumans($dt->copy()->addMonth()); // 1月前
echo $dt->diffForHumans($dt->copy()->subMonth()); // 1月后
echo Carbon::now()->addSeconds(5)->diffForHumans(); // 距现在5秒
echo Carbon::now()->subDays(24)->diffForHumans(); // 3周前
echo Carbon::now()->subDays(24)->diffForHumans(null, true); // 3周
$dt = Carbon::now();
// 年的差异
echo $dt->diffInYears($dt->copy()->addYear(2)); // 2
echo $dt->diffInMonths(); // 0
echo $dt->diffInMinutes(); // 0