创建实例化
$carbon
= new Carbon();
$carbon = new Carbon('时间', '时区');
Carbon::createFromFormat($format, $time, $tz);
echo Carbon::createFromDate($year, $month, $day, $tz)."\n";
echo Carbon::createMidnightDate($year, $month, $day, $tz)."\n";
echo Carbon::createFromTime($hour, $minute, $second, $tz)."\n";
echo Carbon::createFromTimeString("$hour:$minute:$second", $tz)."\n";
echo Carbon::create($year, $month, $day, $hour, $minute, $second, $tz)."\n";
Carbon::parse('first day of December 2008')->addWeeks(2)
createFromDate()将默认为现在时间。
createFromTime()将日期默认为今天
$tz 默认值是当前时区
时间格式参考如下
www.php.net/manual/zh/d…
www.php.net/manual/zh/d…
www.php.net/manual/zh/d…
www.php.net/manual/zh/d…
当前时间now($tz = null)
参数设置时区,默认跟谁你的PHP设置或者是自定义设置
echo Carbon::now();
echo Carbon::now('Asia/Jayapura');
明天,昨天
Carbon::tomorrow();
Carbon::yesterday();
时间 加多少天,多少秒,多少小时等
$mutable = Carbon::now();
$data=[];
$data[]='现在:'.$mutable->add('minute','1');
$data[]='时间+ 1 分钟:'.$mutable->add('minute','1');
$data[]='时间+10秒:'.$mutable->add('second','10');
$data[]='时间+ 1 小时:'.$mutable->add('hour','1');
$data[]='时间+ 1 天:'.$mutable->add('day','1');
$data[]='时间+ 1 周:'.$mutable->add('week','1');
$data[]='时间+ 1 月:'.$mutable->add('month','1');
$data[]='时间+ 1 年:'.$mutable->add('year','1');
现在:2020-07-29 15:41:43
时间+ 1 分钟:2020-07-29 15:42:43
时间+10秒:2020-07-29 15:42:53
时间+ 1 小时:2020-07-29 16:42:53
时间+ 1 天:2020-07-30 16:42:53
时间+ 1 周:2020-08-06 16:42:53
时间+ 1 月:2020-09-06 16:42:53
时间+ 1 年:2021-09-06 16:42:53
时间减多少天,秒,时,周,月,年等
$data[]='现在:'.$mutable->sub('minute','1');
$data[]='时间- 1 分钟:'.$mutable->sub('minute','1');
$data[]='时间-10秒:'.$mutable->sub('second','10');
$data[]='时间- 1 小时:'.$mutable->sub('hour','1');
$data[]='时间- 1 天:'.$mutable->sub('day','1');
$data[]='时间- 1 周:'.$mutable->sub('week','1');
$data[]='时间- 1 月:'.$mutable->sub('month','1');
$data[]='时间- 1 年:'.$mutable->sub('year','1');
现在:2020-07-29 15:48:14
时间- 1 分钟:2020-07-29 15:47:14
时间-10秒:2020-07-29 15:47:04
时间- 1 小时:2020-07-29 14:47:04
时间- 1 天:2020-07-28 14:47:04
时间- 1 周:2020-07-21 14:47:04
时间- 1 月:2020-06-21 14:47:04
时间- 1 年:2019-06-21 14:47:04
当前日期 today($tz = null)
日期增减addDay()
后面参数支持正数和负数,负数今天日期减多少天,加,今天日期加多少天
默认是明天,今天是28号
$tomorrow = Carbon::now()->addDay();
echo ($tomorrow);
$tomorrow = Carbon::now()->addDay(-7);
echo ($tomorrow);
比较2个日期相差
$dtToronto = Carbon::create(2012, 1, 1, 0, 0, 0);
$dtVancouver = Carbon::create(2013, 4, 12, 6, 4, 6);
$data[]='相差小时:'. $dtVancouver->diffInHours($dtToronto);
$data[]='相差天:'. $dtVancouver->diffInDays($dtToronto);
$data[]='相差分:'. $dtVancouver->diffInMinutes($dtToronto);
$data[]='相差秒:'. $dtVancouver->diffInSeconds($dtToronto);
$data[]='相差周:'. $dtVancouver->diffInWeeks($dtToronto);
$data[]='相差月:'. $dtVancouver->diffInMonths($dtToronto);
$data[]='相差年:'. $dtVancouver->diffInYears($dtToronto);
相差小时:11214
相差天:467
相差分:672844
相差秒:40370646
相差周:66
相差月:15
相差年:1
设置翻译规则
$boringLanguage = 'zh'
$translator = \Carbon\Translator::get($boringLanguage)
$translator->setTranslations([
'day' => ':count 天哦|:count 天了',
])
$date1 = Carbon::create(2018, 1, 1, 0, 0, 0)
$date2 = Carbon::create(2018, 1, 4, 4, 0, 0)
echo $date1->locale('zh')->diffForHumans($date2)
设置语言locale,具体语言查看 vendor/nesbot/carbon/src/Carbon/Lang 目录下
locale 支持多个查找语言
\Carbon\Translator::get('xx')->setTranslations([
'day' => ':count Xday',
\Carbon\Translator::get('xy')->setTranslations([
'day' => ':count Yday',
'hour' => ':count Yhour',
$date = Carbon::now()->locale('xx', 'xy', 'es')->sub('3 days 6 hours 40 minutes');
echo $date->ago(['parts' => 3]); // hace 3 Xday 6 Yhour 40 minutos
首先先查找 xx 语言,然后匹配不到查找xy,最后查找es
查看支持的语言
Carbon::getAvailableLocales()
本地化相关辅助方法
$zhTwInfo = Carbon::getAvailableLocalesInfo()['zh_TW'];
$srCyrlInfo = Carbon::getAvailableLocalesInfo()['sr_Cyrl'];
$caInfo = Carbon::getAvailableLocalesInfo()['ca'];
var_dump($zhTwInfo->getId());
var_dump($zhTwInfo->getNames());
array(2) {
["isoName"]=>
string(7) "Chinese"
["nativeName"]=>
string(38) "中文 (Zhōngwén), 汉语, 漢語"
var_dump($zhTwInfo->getCode());
var_dump($zhTwInfo->getVariant());
var_dump($srCyrlInfo->getVariant());
var_dump($zhTwInfo->getVariantName());
var_dump($srCyrlInfo->getVariantName());
var_dump($zhTwInfo->getRegion());
var_dump($srCyrlInfo->getRegion());
var_dump($zhTwInfo->getRegionName());
var_dump($srCyrlInfo->getRegionName());
var_dump($zhTwInfo->getFullIsoName());
var_dump($caInfo->getFullIsoName());
var_dump($zhTwInfo->getFullNativeName());
var_dump($caInfo->getFullNativeName());
var_dump($zhTwInfo->getIsoName());
var_dump($caInfo->getIsoName());
var_dump($zhTwInfo->getNativeName());
var_dump($caInfo->getNativeName());
var_dump($zhTwInfo->getIsoDescription());
var_dump($srCyrlInfo->getIsoDescription());
var_dump($caInfo->getIsoDescription());
var_dump($zhTwInfo->getNativeDescription());
var_dump($srCyrlInfo->getNativeDescription());
var_dump($caInfo->getNativeDescription());
var_dump($zhTwInfo->getFullIsoDescription());
var_dump($srCyrlInfo->getFullIsoDescription());
var_dump($caInfo->getFullIsoDescription());
var_dump($zhTwInfo->getFullNativeDescription());
var_dump($srCyrlInfo->getFullNativeDescription());
var_dump($caInfo->getFullNativeDescription());
$srCyrlInfo->setIsoName('foo, bar')->setNativeName('biz, baz');
var_dump($srCyrlInfo->getIsoName());
var_dump($srCyrlInfo->getFullIsoName());
var_dump($srCyrlInfo->getFullIsoDescription());
var_dump($srCyrlInfo->getNativeName());
var_dump($srCyrlInfo->getFullNativeName());
var_dump($srCyrlInfo->getFullNativeDescription());
var_dump(\Carbon\Language::all()['zh']);
array(2) {
["isoName"]=>
string(7) "Chinese"
["nativeName"]=>
string(38) "中文 (Zhōngwén), 汉语, 漢語"
var_dump(\Carbon\Language::regions()['TW']);
string(25) "Taiwan, Province of China"
全局设置语言
Carbon::setLocale("zh");
isoFormat 对日期名称和月份名称使用上下文化的方法
$date = Carbon::parse('2018-06-15 17:34:15.984512', 'UTC');
echo $date->isoFormat('MMMM Do YYYY, h:mm:ss a');
echo "\n";
echo $date->isoFormat('dddd');
echo "\n";
echo $date->isoFormat('MMM Do YY');
echo "\n";
echo $date->isoFormat('YYYY [escaped] YYYY');
| Code | Example | Description |
|---|
| OD | 5 | Day number with alternative numbers such as 三 for 3 if locale is ja_JP |
| OM | 1 | Month number with alternative numbers such as ၀၂ for 2 if locale is my_MM |
| OY | 2017 | Year number with alternative numbers such as ۱۹۹۸ for 1998 if locale is fa |
| OH | 17 | 24-hours number with alternative numbers such as ႑႓ for 13 if locale is shn_MM |
| Oh | 5 | 12-hours number with alternative numbers such as 十一 for 11 if locale is lzh_TW |
| Om | 4 | Minute number with alternative numbers such as ୫୭ for 57 if locale is or |
| Os | 5 | Second number with alternative numbers such as 十五 for 15 if locale is ja_JP |
| D | 5 | Day of month number (from 1 to 31) |
| DD | 05 | Day of month number with trailing zero (from 01 to 31) |
| Do | 5th | Day of month with ordinal suffix (from 1st to 31th), translatable |
| d | 4 | Day of week number (from 0 (Sunday) to 6 (Saturday)) |
| dd | Th | Minified day name (from Su to Sa), transatable |
| ddd | Thu | Short day name (from Sun to Sat), transatable |
| dddd | Thursday | Day name (from Sunday to Saturday), transatable |
| DDD | 5 | Day of year number (from 1 to 366) |
| DDDD | 005 | Day of year number with trailing zeros (3 digits, from 001 to 366) |
| DDDo | 5th | Day of year number with ordinal suffix (from 1st to 366th), translatable |
| e | 4 | Day of week number (from 0 (Sunday) to 6 (Saturday)), similar to "d" but this one is translatable (takes first day of week of the current locale) |
| E | 4 | Day of week number (from 1 (Monday) to 7 (Sunday)) |
| H | 17 | Hour from 0 to 23 |
| HH | 17 | Hour with trailing zero from 00 to 23 |
| h | 5 | Hour from 0 to 12 |
| hh | 05 | Hour with trailing zero from 00 to 12 |
| k | 17 | Hour from 1 to 24 |
| kk | 17 | Hour with trailing zero from 01 to 24 |
| m | 4 | Minute from 0 to 59 |
| mm | 04 | Minute with trailing zero from 00 to 59 |
| a | pm | Meridiem am/pm |
| A | PM | Meridiem AM/PM |
| s | 5 | Second from 0 to 59 |
| ss | 05 | Second with trailing zero from 00 to 59 |
| S | 0 | Second tenth |
| SS | 08 | Second hundredth (on 2 digits with trailing zero) |
| SSS | 084 | Millisecond (on 3 digits with trailing zeros) |
| SSSS | 0845 | Second ten thousandth (on 4 digits with trailing zeros) |
| SSSSS | 08451 | Second hundred thousandth (on 5 digits with trailing zeros) |
| SSSSSS | 084512 | Microsecond (on 6 digits with trailing zeros) |
| SSSSSSS | 0845120 | Second ten millionth (on 7 digits with trailing zeros) |
| SSSSSSSS | 08451200 | Second hundred millionth (on 8 digits with trailing zeros) |
| SSSSSSSSS | 084512000 | Nanosecond (on 9 digits with trailing zeros) |
| M | 1 | Month from 1 to 12 |
| MM | 01 | Month with trailing zero from 01 to 12 |
| MMM | Jan | Short month name, translatable |
| MMMM | January | Month name, translatable |
| Mo | 1st | Month with ordinal suffix from 1st to 12th, translatable |
| Q | 1 | Quarter from 1 to 4 |
| Qo | 1st | Quarter with ordinal suffix from 1st to 4th, translatable |
| G | 2017 | ISO week year (see ISO week date) |
| GG | 2017 | ISO week year (on 2 digits with trailing zero) |
| GGG | 2017 | ISO week year (on 3 digits with trailing zeros) |
| GGGG | 2017 | ISO week year (on 4 digits with trailing zeros) |
| GGGGG | 02017 | ISO week year (on 5 digits with trailing zeros) |
| g | 2017 | Week year according to locale settings, translatable |
| gg | 2017 | Week year according to locale settings (on 2 digits with trailing zero), translatable |
| ggg | 2017 | Week year according to locale settings (on 3 digits with trailing zeros), translatable |
| gggg | 2017 | Week year according to locale settings (on 4 digits with trailing zeros), translatable |
| ggggg | 02017 | Week year according to locale settings (on 5 digits with trailing zeros), translatable |
| W | 1 | ISO week number in the year (see ISO week date) |
| WW | 01 | ISO week number in the year (on 2 digits with trailing zero) |
| Wo | 1st | ISO week number in the year with ordinal suffix, translatable |
| w | 1 | Week number in the year according to locale settings, translatable |
| ww | 01 | Week number in the year according to locale settings (on 2 digits with trailing zero) |
| wo | 1st | Week number in the year according to locale settings with ordinal suffix, translatable |
| x | 1483635845085 | Millisecond-precision timestamp (same as date.getTime() in JavaScript) |
| X | 1483635845 | Timestamp (number of seconds since 1970-01-01) |
| Y | 2017 | Full year from -9999 to 9999 |
| YY | 17 | Year on 2 digits from 00 to 99 |
| YYYY | 2017 | Year on 4 digits from 0000 to 9999 |
| YYYYY | 02017 | Year on 5 digits from 00000 to 09999 |
| YYYYYY | +002017 | Year on 5 digits with sign from -09999 to +09999 |
| z | UTC | Abbreviated time zone name |
| zz | UTC | Time zone name |
| Z | +00:00 | Time zone offset HH:mm |
| ZZ | +0000 | Time zone offset HHmm |
calendar 显示日历日期
$date = CarbonImmutable::now();
$data[]= $date->locale('zh')->calendar();
$data[]=$date->sub('1 day 3 hour')->calendar();
$data[]=$date->add('1 day 3 hour')->calendar();
今天16:51
昨天13:51
明天19:51
parse 根据字符串创建时间实例
$date = CarbonImmutable::parse('2020-06-29 16:55:0')
echo $date
format() 格式化
www.php.net/manual/en/d…
echo $date->locale('zh')->format('Y-m-d H:i:s');
可直接使用取得属性输出值
$dt = Carbon::parse('2012-10-5 23:26:11.123789');
var_dump($dt->year);
var_dump($dt->month);
var_dump($dt->day);
var_dump($dt->hour);
var_dump($dt->minute);
var_dump($dt->second);
var_dump($dt->micro);
var_dump($dt->dayOfWeek);
var_dump($dt->dayOfWeekIso);
var_dump($dt->englishDayOfWeek);
var_dump($dt->shortEnglishDayOfWeek);
var_dump($dt->locale('de')->dayName);
var_dump($dt->locale('de')->shortDayName);
var_dump($dt->locale('de')->minDayName);
var_dump($dt->englishMonth);
var_dump($dt->shortEnglishMonth);
var_dump($dt->locale('de')->monthName);
var_dump($dt->locale('de')->shortMonthName);
setlocale(LC_TIME, 'German');
var_dump($dt->localeDayOfWeek);
var_dump($dt->shortLocaleDayOfWeek);
var_dump($dt->localeMonth);
var_dump($dt->shortLocaleMonth);
setlocale(LC_TIME, '');
var_dump($dt->dayOfYear);
var_dump($dt->weekNumberInMonth);
var_dump($dt->weekOfMonth);
var_dump($dt->weekOfYear);
var_dump($dt->daysInMonth);
var_dump($dt->timestamp);
var_dump($dt->valueOf());
var_dump($dt->getPreciseTimestamp(6));
var_dump(Carbon::createFromDate(1975, 5, 21)->age);
var_dump($dt->quarter);
var_dump(Carbon::createFromTimestampUTC(0)->offset);
var_dump(Carbon::createFromTimestamp(0, 'Europe/Paris')->offset);
var_dump(Carbon::createFromTimestamp(0, 'Europe/Paris')->getOffset());
var_dump(Carbon::createFromTimestamp(0, 'Europe/Paris')->offsetMinutes);
var_dump(Carbon::createFromTimestamp(0, 'Europe/Paris')->offsetHours);
var_dump(Carbon::createFromTimestamp(0, 'Europe/Paris')->getOffsetString());
var_dump(Carbon::createFromTimestamp(0, 'Europe/Paris')->getTimezone());