日常开发中,我们会经常用到日期和时间的操作,但官方的一般操作比较复杂,需要大量的时间进行格式化问题和大量计算等等。Carbon组件 可以帮助我们在 PHP 开发中处理日期/时间变得更加简单、更语义化,从而使得我们的代码更容易阅读和维护,下面我们将展示Carbon组件的部分使用示例。
1、安装Carbon组件
composer require nesbot/carbon
2、使用Carbon组件
use Carbon\Carbon;
3、使用Carbon组件操作日期/时间 之 获取日期和时间代码
//获取当前时间:2023-01-14 18:53:25 $current = Carbon::now(); echo "获取当前时间:" . $current; //获取今天:2023-01-14 00:00:00 $today = Carbon::today(); echo "获取今天:" . $today; //获取昨天:2023-01-13 00:00:00 $yesterday = Carbon::yesterday(); echo "获取昨天:" . $yesterday; //获取明天:2023-01-15 00:00:00 $tomorrow = Carbon::tomorrow(); echo "获取明天:" . $tomorrow; //解析特定字符串 - 2023-01-01 00:00:00 $newYear = new Carbon('first day of January 2023'); echo "解析特定字符串:" . $newYear; //设定一个特定的时区 -2023-01-01 00:00:00 $newYearPST = new Carbon ('first day of January 2023', 'Asia/Shanghai'); echo "设定一个特定的时区:" . $newYearPST;
4、使用Carbon组件操作日期/时间 之 操作日期/时间
//添加 30 天到当前时间 $trialExpires = Carbon::now()->addDays(30); echo "往后加30天:".$trialExpires; //输出:往后加30天:2023-02-13 18:59:16 /*********伟大的分割线*********/ //创建一个日期 + 时间 $dt = Carbon::create(2023, 1, 12, 12); echo $dt->toDateTimeString(); //2023-01-12 12:00:00 //加 5 年 echo $dt->addYears(5); //2028-01-12 12:00:00 //在 5 年的基础上 再加 1 年 echo $dt->addYear(); //2029-01-12 12:00:00 // 减 1 年 echo $dt->subYear(); //2028-01-12 12:00:00 //减 5 年 echo $dt->subYears(5); //2023-01-12 12:00:00 //加 60 个月 echo $dt->addMonths(60); //2028-01-12 12:00:00 //加 1 个月 echo $dt->addMonth(); // 2028-02-12 12:00:00 //减 1 个月 echo $dt->subMonth(); //2028-01-12 12:00:00 //减 60 个月 echo $dt->subMonths(60); // 2023-01-12 12:00:00 //加 29 天 echo $dt->addDays(29); //2023-02-10 12:00:00 //加 1 天 echo $dt->addDay(); //2023-02-11 12:00:00 //减 1 天 echo $dt->subDay(); //2023-02-10 12:00:00 //减 29 天 echo $dt->subDays(29); //2023-01-12 12:00:00 //加 4 天 排除周末 echo $dt->addWeekdays(2); //2023-01-18 12:00:00 //加 1 天 排除周末 echo $dt->addWeekday(); //2023-01-19 12:00:00 //减 1 天 排除周末 echo $dt->subWeekday(); //2023-01-18 12:00:00 //减 4 天 排除周末 echo $dt->subWeekdays(4); //2023-01-12 12:00:00 //加 3 周 echo $dt->addWeeks(3); //2023-02-02 12:00:00 //加 1 周 echo $dt->addWeek(); //2023-02-07 12:00:00 //减 1 周 echo $dt->subWeek(); //2023-01-31 12:00:00 //减 3 周 echo $dt->subWeeks(3); //2023-01-10 12:00:00 //加 24 小时 echo $dt->addHours(24); //2023-01-11 12:00:00 //加 1 小时 echo $dt->addHour(); //2023-01-11 13:00:00 //减 1 小时 echo $dt->subHour(); //2023-01-11 12:00:00 //减 24 小时 echo $dt->subHours(24); //2023-01-10 12:00:00 //加 50 分钟 echo $dt->addMinutes(50); //2023-01-10 12:50:00 //加 1 分钟 echo $dt->addMinute(); //2023-01-10 12:51:00 //减 1 分钟 echo $dt->subMinute(); //2023-01-10 12:50:00 //减 50 分钟 echo $dt->subMinutes(50); //2023-01-10 12:00:00 //加 50 秒 echo $dt->addSeconds(50); //2023-01-10 12:00:50 //加 1 秒 echo $dt->addSecond(); //2023-01-10 12:00:51 //减 1 秒 echo $dt->subSecond(); //2023-01-10 12:00:50 //减 50 秒 echo $dt->subSeconds(50); //2023-01-10 12:00:00 //加上 10 天 echo $dt->modify('+10 days'); //减 2 天 echo $dt->modify('-2 days');
5、使用Carbon组件操作日期/时间 之 格式化 日期 + 时间
$dt = Carbon::now(); //格式化 当前日期 echo $dt->toDateString(); //2023-01-14 //格式化 英文日期 echo $dt->toFormattedDateString(); //Jan 14, 2023 //格式化时间 echo $dt->toTimeString(); //19:08:21 //格式化日期 + 时间 echo $dt->toDateTimeString(); //2023-01-14 19:08:21 //格式化日期 + 时间 英文 echo $dt->toDayDateTimeString(); //Sat, Jan 14, 2023 7:08 PM
6、使用Carbon组件操作日期/时间 之 获取一个 格式化 字符串类型 的日期
echo Carbon::today()->toDateTimeString(); //获取当天的时间 带时分秒 2023-01-14 00:00:00 echo Carbon::yesterday()->toDateTimeString(); //2023-01-13 00:00:00 echo Carbon::tomorrow()->toDateTimeString(); //2023-01-15 00:00:00 echo Carbon::today()->toDateString(); //获取当天的时间 不带时分秒 2023-01-14 echo Carbon::yesterday()->toDateString(); //2023-01-13 echo Carbon::tomorrow()->toDateString(); //2023-01-15
7、使用Carbon组件操作日期/时间 之 解析日期/时间
echo Carbon::parse('2018-12-27')->toDateString(); //2018-12-27 echo Carbon::parse('2016-12-27')->toDateTimeString(); //2018-12-27 00:00:00 echo Carbon::parse('2016-12-27 00:10:25')->toDateTimeString(); //2018-12-27 00:10:25 echo Carbon::parse('2016-12-27 00:10:25')->timestamp; //获取某个日期的时间戳 echo Carbon::parse('today')->toDateTimeString(); //获取当天的时间 echo Carbon::parse('yesterday')->toDateTimeString(); //获取昨天的时间 echo Carbon::parse('tomorrow')->toDateTimeString(); // 获取明天的时间 echo Carbon::parse('2 days ago')->toDateTimeString(); // 获取两天之前的时间 echo Carbon::parse('+3 days')->toDateTimeString(); // 获取两天之后的时间 echo Carbon::parse('+2 weeks')->toDateTimeString(); // 获取两周之后的时间 echo Carbon::parse('+4 months')->toDateTimeString(); // 获取两月之后的时间 echo Carbon::parse('-1 year')->toDateTimeString(); // 获取上一年的今天时间 echo Carbon::parse('next wednesday')->toDateTimeString(); // 获取下周三的时间 echo Carbon::parse('last friday')->toDateTimeString(); // 获取最后一个周五的时间 var_dump(Carbon::now()->isWeekday()); //是否是工作日 var_dump(Carbon::parse('2018-12-29')->isWeekday()); var_dump(Carbon::now()->isWeekend()); //是否是休息日 var_dump(Carbon::parse('2018-12-29')->isWeekend()); var_dump(Carbon::parse('2018-12-26')->isYesterday()); //是否是昨天 var_dump(Carbon::parse('2018-12-26')->isToday()); //是否是今天 var_dump(Carbon::parse('2018-12-26')->isTomorrow()); //是否是明天 var_dump(Carbon::createFromDate(1991,10,24)->isBirthday()); //今天是否是生日
8、使用Carbon组件操作日期/时间 之 构造日期/时间
echo Carbon::createFromDate('2018', '12', '27'); //2018-12-27 02:21:53 构造年月 echo Carbon::createFromDate('2018', '12', '27','Asia/Taipei'); //2018-12-27 10:22:12 //根据时区构造年月 echo Carbon::createFromTime('12', '59', '52'); // 给当前时间构造时分秒 echo Carbon::create('2018', '12', '27', '12', '59', '52', 'Asia/Taipei'); //构造完整的时分秒 echo Carbon::createFromFormat('Y/m/d H', '2018/05/21 22')->toDateTimeString(); // 构造指定格式的时间 echo Carbon::createFromTimeStamp(1545877701)->toDateTimeString(); //指定时间戳构建时间 echo Carbon::createFromTimeStamp(1545877701,'Asia/Taipei')->toDateTimeString(); //指定时间戳和时区构建时间 echo Carbon::createFromTimeStampUTC(1545877701)->toDateTimeString(); //指定时间戳和时区构建时间
9、使用Carbon组件操作日期/时间 之 获取日期信息(日期更详细的信息)
$time = Carbon::now(); var_dump($time->year); //获取当前的年 var_dump($time->month); //获取当前的月 var_dump($time->day); //获取当前的日 var_dump($time->hour); //获取当前的时 var_dump($time->minute); //获取当前的分 var_dump($time->second); //获取当前的秒 var_dump($time->micro); //获取当前的毫秒 var_dump($time->dayOfWeek); //获取当前时间是这周的第几天 var_dump($time->dayOfYear); //获取当前时间是今年的第几天 var_dump($time->weekOfMonth); //获取当前时间所以在周是当前月的第几周 var_dump($time->weekOfYear); //获取当前时间所以在周是当前年的第几周 var_dump($time->daysInMonth); //获取当月是多少天 var_dump(Carbon::createFromDate(1991, 10, 24)->age); //获取当前时间 距离 1991,10,24 多少年, 也就是你多少岁了
10、使用Carbon组件操作日期/时间 之 日期比较
echo Carbon::now()->tzName; //获取当前时区 $first = Carbon::create(2018, 12, 5, 23, 26, 11); $second = Carbon::create(2018, 9, 5, 20, 26, 11); echo $first->toDateTimeString(); echo $second->toDateTimeString(); /** * min –返回最小日期。 * max – 返回最大日期。 * eq – 判断两个日期是否相等。 * gt – 判断第一个日期是否比第二个日期大。 * lt – 判断第一个日期是否比第二个日期小。 * gte – 判断第一个日期是否大于等于第二个日期。 * lte – 判断第一个日期是否小于等于第二个日期。 */ var_dump($first->eq($second)); var_dump($first->ne($second)); var_dump($first->gt($second)); var_dump($first->gte($second)); var_dump($first->lt($second)); var_dump($first->lte($second)); //区间比较 $first = Carbon::create(2018, 10, 5, 1); $second = Carbon::create(2018, 10, 5, 5); var_dump(Carbon::create(2018, 10, 5, 3)->between($first, $second)); // bool(true) var_dump(Carbon::create(2018, 10, 5, 5)->between($first, $second)); // bool(true) var_dump(Carbon::create(2018, 10, 5, 5)->between($first, $second, false)); // bool(false)
11、使用Carbon组件操作日期/时间 之 获取特殊日期
echo Carbon::now()->startOfDay(); //今天开始时间 echo Carbon::now()->endOfDay(); //今天结束时间 echo Carbon::now()->startOfWeek(); //这周开始时间 echo Carbon::now()->endOfWeek(); //这周结束时间 echo Carbon::now()->startOfMonth(); //这月开始时间 echo Carbon::now()->endOfMonth(); //这月结束时间(带时分秒) echo Carbon::now()->endOfMonth()->toDateString(); //这月结束时间(不带时分秒) //获取指定日期所在月份的最后一天 echo Carbon::parse('2022-11')->endOfMonth()->toDateString(); //获取 2022年11月份的最后一天(不带时分秒 如果要带时分秒 则去掉toDateString方法即可)
另外还有很多很多各种使用方式,请移步到官方文档:https://carbon.nesbot.com
声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。
精彩评论