日常开发中,我们会经常用到日期和时间的操作,但官方的一般操作比较复杂,需要大量的时间进行格式化问题和大量计算等等。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方法即可)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/91779.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/91779.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/91779.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习嵌入式第十八天

文章目录1.数据结构1.概念2.衡量代码质量和效率1.时间复杂度2.空间复杂度3.数据结构分类1.逻辑结构2.存储结构3.常见的数据结构2.链表1.与顺序表的区别2.链表分类1.单向链表1.定义链表节点类型2.空链表的创建3.链表的头插法4.链表的遍历5.链表元素删除3.makefile习题1.数据结构…

基于SpringBoot+Vue实现校园商铺系统

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参…

从资源闲置到弹性高吞吐,JuiceFS 如何构建 70GB/s 吞吐的缓存池?

AI 模型的训练与推理对存储系统提出了极为严苛的要求,特别是在高吞吐、高并发以及对海量小文件的高效处理方面,已成为三大主要挑战。尽管基于 Lustre 或 GPFS 的并行文件系统具备出色的性能,但其成本高昂、吞吐能力与容量强耦合,可…

提升JVM性能之CMS垃圾回收器的优化分析与案例剖析

这里写目录标题一、CMS基本介绍二、CMS核心优化策略1. 避免并发模式失败(Concurrent Mode Failure)2. 减少内存碎片3. 调优并发阶段耗时4. 新生代优化配合三、典型案例解析案例1:电商服务频繁Full GC案例2:金融交易系统碎片导致长…

Token系列 - 再谈稳定币

相关政策 2024年12月,欧洲《加密资产市场监管法案》正式成为法律2025年3月,日本细化了加密资产及稳定币的监管调整2025年5月,英国发布了关于稳定币发行、加密资产托管及加密资产公司财务稳健性的监管提案;2025年5月20日&#xff…

【20min 急速入门】使用Demucs进行音轨分离

创建环境 conda create --name mujica python3.10下载加速依赖 先用nvidia-smi检查机器使用的独显版本, 然后从pytorch官网下载对应的GPU版torch, torchaudio 比如我的是12.2, 就下载11.8版本的 pip3 install torch torchvision torchaudio --index-url https://download.p…

字节Seed发布扩散语言模型,推理速度达2146 tokens/s,比同规模自回归快5.4倍

用扩散模型写代码,不仅像开了倍速,改起来还特别灵活!字节Seed最新发布扩散语言模型Seed Diffusion Preview,这款模型主要聚焦于代码生成领域,它的特别之处在于采用了离散状态扩散技术,在推理速度上表现出色…

海洋大地测量基准与水下导航系列之九我国海洋PNT最新技术进展(下)

三、海洋PNT技术装备研发与工程化应用 1.海底基准装备 研制了首批适应海洋环境的多型海底基准站装备,在我国南海海域成功布设了定位精度优于0.25m的海底大地测量试验基准网,实现了我国海底大地测量基准技术零的突破。基准方舱具备稳固、抗压、防腐、防…

入门MicroPython+ESP32:安装逗脑IDE及驱动

本篇文章将手把手带大家入门MicroPython ESP32,重点介绍逗脑IDE的安装过程以及相关驱动的安装。 一、下载逗脑IDE 要开始使用逗脑IDE,首先需要从官网下载最新版本。请访问以下网址进行下载:https://www.itprojects.cn/ide 下载时的界面大…

CentOS上部署Redis及其哨兵(Sentinel)模式

架构:说明我这里是伪集群的,redis 在同一台机器,Sentinel 只有一个,也存在单点故障问题只能当作开发环境使用,要满足生产至少是下面这种架构 ------------------- ------------------- ------------------- …

《软件测试与质量控制》实验报告二 单元测试

目 录 一、实验学时 二、实验目的 三、实验环境 (一)硬件环境: (二)软件环境: 四、实验内容 1、实验方案: 2、实验步骤: 3、设计思路: 1、安装JUnit和Eclemma…

k8s模式部署PolarDB-X

当前文档适配PolarDB-X V2.4.0 版本 环境描述: 部署机(ops)1x2.2x.2x8.116,部署机需要可以访问互联网。使用ansible进行部署,自行安装ansible。需要部署两个k8s集群,分别在其上安装一个polardb-x集群。 部…

Flask + YARA-Python*实现文件扫描功能

以下是一个 完整的 Web API 示例,使用 Flask YARA-Python 实现文件扫描功能,支持上传文件并返回 YARA 规则匹配结果。 ✅ 功能说明 提供一个 /scan 接口,支持文件上传使用预加载的 YARA 规则进行扫描返回 JSON 格式的匹配结果支持多规则、可…

WinForm之NumericUpDown控件

NumericUpDown(数字上下控件)是 WinForm 中专门用于输入和调整数值的控件,它结合了文本框和上下按钮,用户可通过点击按钮或直接输入来设置数值,且能严格限制数值范围(最小值、最大值)和步长&…

一文读懂K8S kubectl 命令,运维小白必看!

一、Kubectl 是什么? Kubectl 是 Kubernetes(简称 K8S)集群的命令行工具,它就像是一把万能钥匙,让我们可以与 K8S 集群进行交互,轻松管理集群中的各种资源,像是 Pod、Service、Deployment 等等。通过向 K8S API 发送 REST 请求,kubectl 实现了对集群资源的增删改查等操…

髋臼方向的定义与测量-I

近期看到关于髋臼方向不同应用场景下的不同定义,觉得特别有意思,但是,原文是影印本,不太方便实用屏幕取词翻译,且一些专业术语也不太好理解。 因此,我将原文和翻译整理了一些,不对的地方&#x…

Python爬虫实战:研究mahotas库,构建图像获取及处理系统

一、引言 (一)研究背景 在信息爆炸的时代,图像作为一种直观、丰富的信息载体,其数量在互联网上呈现指数级增长。这些图像数据涵盖了自然景观、动植物、工业产品等多个领域,为模式识别、机器学习等研究提供了宝贵的数据源。特别是在植物学研究领域,叶片图像包含了丰富的…

【04】海康相机C#开发——VS 在编译时,提示“Files的值“+乱码情况解决办法’ ,C#项目打开编译时报错:Files 的值“IGEF‘,

文章目录C#项目打开,用VS 在编译时编译时报错:Files 的值“乱码; 有的编译器会显示:Files的值“IGEF 以上报错都为同一种错误,.net中的配置文件乱码导致的: 找到项目目录下的“..\obj\Debug\”的文件夹中…

MySQL隐式转换陷阱:从错误查询案例解析索引失效与数据类型匹配

开始之前,先问个问题问题:mysql 数据类型是date ,怎么写查询条件索引有效? ——下面带着疑问看下去。 一、mysql-8.隐式转换导致索引失效或查出不符合where条件结果 今天在执行一条sql语句时候,where条件写错了&#x…

【sklearn(01)】数据集加载、划分,csv文件创建,特征工程,无量纲化

目录sklearn数据集玩具数据集现实世界数据集加载玩具数据集获取现实世界数据集本地csv数据创建csv文件pandas加载csv数据集划分特征工程步骤特征工程APIDictVectorizer 字典列表特征提取APICountVectorizer 文本特征提取API英文文本提取中文文本提取TfidfVectorizer TF-IDF文本…