Carbon常用方法及基础用法

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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容