PHP中的日期/時間處理之Carbon組件

日常開發中,我們會經常用到日期和時間的操作,但官方的一般操作比較復雜,需要大量的時間進行格式化問題和大量計算等等。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文本…