TimeHelper簡(jiǎn)單快捷PHP日期時(shí)間助手類庫(kù)使用詳解
TimeHelper
是一個(gè)簡(jiǎn)單易用的PHP時(shí)間日期助手類庫(kù)
,可以快速實(shí)現(xiàn)常用的時(shí)間日期操作,比如獲取指定時(shí)間的秒數(shù),獲取友好的時(shí)間格式,判斷時(shí)間范圍,計(jì)算兩個(gè)時(shí)間相差值,返回N小時(shí)/天/星期/月/年前或者后的時(shí)間戳等等
特性
- 簡(jiǎn)單易用: 不依賴任何擴(kuò)展,
開(kāi)箱即用
- 化繁為簡(jiǎn): 所有方法都可以傳入
任意類型的時(shí)間日期格式
或時(shí)間戳
- 快捷高效: 所有操作只需要
一個(gè)靜態(tài)方法
即可完成 - 長(zhǎng)期維護(hù): 作者為自由職業(yè)者,保證項(xiàng)目的
長(zhǎng)期穩(wěn)定
和持續(xù)更新
??安裝
通過(guò)Composer導(dǎo)入類庫(kù)
composer require zjkal/time-helper
??使用文檔
首先在類中引用TimeHelper助手類
use zjkal\TimeHelper;
1. 獲取需要的秒數(shù)
一般用于設(shè)置緩存時(shí)間,設(shè)置結(jié)束時(shí)間等
//返回到今天晚上零點(diǎn)之前的秒數(shù) TimeHelper::secondEndToday(); //返回N分鐘的秒數(shù)(默認(rèn)為1分鐘) TimeHelper::secondMinute(5); //返回N小時(shí)的秒數(shù)(默認(rèn)為1小時(shí)) TimeHelper::secondHour(2); //返回N天的秒數(shù)(默認(rèn)為1天) TimeHelper::secondDay(10); //返回N周的秒數(shù)(默認(rèn)為1周) TimeHelper::secondWeek(4);
2. 返回友好的日期格式,比如N秒前,N分鐘前,N小時(shí)前等等
一般用于社交類平臺(tái),評(píng)論,論壇等
//一共2個(gè)參數(shù): //第1個(gè)參數(shù)傳入字符串類型的時(shí)間或者時(shí)間戳都可以, //第2個(gè)參數(shù)為語(yǔ)言(默認(rèn)為中文,需要英文請(qǐng)傳入en) TimeHelper::toFriendly('2022-3-2 10:15:33'); //英文 TimeHelper::toFriendly(1646186290, 'en');
3. 判斷時(shí)間范圍
//判斷日期是否為今天 TimeHelper::isToday('2020-4-10 23:01:11'); //判斷日期是否為本周 TimeHelper::isThisWeek('2020-5-1'); //判斷日期是否為本月 TimeHelper::isThisMonth(1586451741); //判斷日期是否為今年 TimeHelper::isThisYear('Apr 11, 2020'); //判斷指定時(shí)間是星期幾,不傳默認(rèn)為當(dāng)前時(shí)間. 返回值為1-7,1為星期一,7為星期日 TimeHelper::getWeek('2022-11-27'); //判斷指定時(shí)間是否為平常日(周一到周五) TimeHelper::isWeekday('2023-03-08'); //判斷指定時(shí)間是否為周末(周六和周日) TimeHelper::isWeekend(1586451741);
4. 計(jì)算兩個(gè)時(shí)間相差值
如果只傳入一個(gè)參數(shù),則與當(dāng)前時(shí)間比較
//計(jì)算兩個(gè)日期相差天數(shù) TimeHelper::diffDays('2022-4-10 23:01:11','Apr 11, 2020'); //計(jì)算兩個(gè)日期相差周數(shù) TimeHelper::diffWeeks('2022-4-10 23:01:11'); //計(jì)算兩個(gè)日期相差月數(shù) TimeHelper::diffMonths(1586451741,'Apr 11, 2020'); //計(jì)算兩個(gè)日期相差年數(shù) TimeHelper::diffYears('2022-4-10 23:01:11','Apr 11, 2020');
5. 返回N小時(shí)/天/星期/月/年前或者后的時(shí)間戳
只傳入1個(gè)參數(shù)以當(dāng)前時(shí)間計(jì)算,傳入第2個(gè)參數(shù)則以該時(shí)間計(jì)算,傳入第3個(gè)參數(shù)為true,則時(shí)間取整
//返回指定時(shí)間3分鐘前0秒的時(shí)間戳 TimeHelper::beforeMinute(3,'2022-3-2 10:15:33',true); //返回當(dāng)前時(shí)間5分鐘后的時(shí)間戳 TimeHelper::afterMinute(5); //返回指定時(shí)間1小時(shí)前的時(shí)間戳(請(qǐng)注意此用法為php8之后的用法) TimeHelper::beforeHour(datetime:'Apr 11, 2020'); //返回2小時(shí)后的時(shí)間戳 TimeHelper::afterHour(2); //返回15天前0點(diǎn)的時(shí)間戳 TimeHelper::beforeDay(15,null,true); //返回15天后的時(shí)間戳 TimeHelper::afterDay(15); //返回指定時(shí)間2星期前的時(shí)間戳 TimeHelper::beforeWeek(2,'2022-4-10 23:01:11'); //返回指定時(shí)間10星期后的時(shí)間戳 TimeHelper::afterWeek(10,1646360133); //返回指定時(shí)間1個(gè)月前的時(shí)間戳(請(qǐng)注意此用法為php8之后的用法) TimeHelper::beforeMonth(datetime:1646360133); //返回5個(gè)月后的時(shí)間戳 TimeHelper::afterMonth(5); //返回指定時(shí)間3年前的時(shí)間戳 TimeHelper::beforeYear(3,'2022-7-11'); //返回2年后的時(shí)間戳 TimeHelper::afterYear(2);
6.獲取當(dāng)前秒級(jí)/毫秒級(jí)/微秒級(jí)/納秒級(jí)的時(shí)間戳
生成訂單號(hào)或者與其他編程語(yǔ)言對(duì)接時(shí)可能會(huì)用到
//獲取秒級(jí)的時(shí)間戳,可用time()代替 TimeHelper::getTimestamp(); //獲取毫秒級(jí)的時(shí)間戳 TimeHelper::getMilliTimestamp(); //獲取微秒級(jí)的時(shí)間戳 TimeHelper::getMicroTimestamp(); //獲取納秒級(jí)的時(shí)間戳 TimeHelper::getNanoTimestamp();
7.日期轉(zhuǎn)換
用于爬蟲(chóng)爬取網(wǎng)頁(yè)或第三方程序?qū)訒r(shí),時(shí)間格式不統(tǒng)一的轉(zhuǎn)換
//將任意格式的時(shí)間轉(zhuǎn)換為指定格式 //第一個(gè)參數(shù)是時(shí)間格式,與系統(tǒng)函數(shù)date()的格式保持一致 //第二個(gè)參數(shù)則是任意格式的時(shí)間日期,不傳則默認(rèn)為當(dāng)前時(shí)間,可用系統(tǒng)函數(shù)date()代替 TimeHelper::format('Y-m-d H:i:s','May 3, 2022'); //判斷一個(gè)字符串是否為時(shí)間戳,是返回true,否返回false TimeHelper::isTimestamp(1646360133); //將任意時(shí)間類型的字符串轉(zhuǎn)為時(shí)間戳 TimeHelper::toTimestamp('Apr 11, 2020');
8.平閏年相關(guān)
比原生方法使用起來(lái)更方便
//判斷是否為閏年,是返回true,否返回false TimeHelper::isLeapYear('2020-3-2 10:15:33'); //判斷該日期的當(dāng)年有多少天 TimeHelper::daysInYear(1646360133); //判斷該日期的當(dāng)月有多少天 TimeHelper::daysInMonth('Apr 11, 2020');
9.時(shí)區(qū)相關(guān) ??
主要提供獲取不同時(shí)區(qū)的時(shí)間和轉(zhuǎn)換不同時(shí)區(qū)的時(shí)間的方法
//將任意格式的時(shí)間或時(shí)間戳轉(zhuǎn)換為指定時(shí)區(qū)的時(shí)間 //第一個(gè)參數(shù)為要轉(zhuǎn)換的目標(biāo)時(shí)區(qū) //第二個(gè)參數(shù)為原時(shí)區(qū),不傳則默認(rèn)為當(dāng)前時(shí)區(qū) //第三個(gè)參數(shù)為任意格式的時(shí)間或時(shí)間戳,不傳則默認(rèn)為當(dāng)前時(shí)間 //第四個(gè)參數(shù)為時(shí)間格式,與系統(tǒng)函數(shù)date()的格式保持一致,不傳則默認(rèn)為Y-m-d H:i:s TimeHelper::timezoneFormat('Europe/London', 'Asia/Shanghai', '2023-8-15 19:16:43', 'H:i:s'); //獲得當(dāng)前洛杉磯的時(shí)間 TimeHelper::timezoneFormat('America/Los_Angeles'); //將洛杉磯時(shí)間轉(zhuǎn)換為倫敦時(shí)間 TimeHelper::timezoneFormat('Europe/London', 'America/Los_Angeles', 'Aug 15, 2023 10:15:33', 'H:i:s'); //將時(shí)間戳轉(zhuǎn)換為倫敦時(shí)間 TimeHelper::timezoneFormat('Europe/London', null, 1692097543);
所支持的時(shí)區(qū)列表請(qǐng)參考時(shí)區(qū)列表
10.國(guó)內(nèi)節(jié)假日/工作日相關(guān) ??
專門(mén)針對(duì)國(guó)內(nèi)的節(jié)假日進(jìn)行判斷,目前包含2020年-2023年的節(jié)假日數(shù)據(jù),后續(xù)也會(huì)持續(xù)更新.
為了便于維護(hù),另起了一個(gè)類ChinaHoliday,同樣可以傳入任意類型的時(shí)間格式或時(shí)間戳
use zjkal\ChinaHoliday; //判斷指定日期是否為國(guó)內(nèi)的工作日 ChinaHoliday::isWorkday('2023-01-23'); //判斷指定日期是否為國(guó)內(nèi)的節(jié)假日 ChinaHoliday::isHoliday(1646360133);
特別說(shuō)明:
所有時(shí)間的方法都可以傳入任意格式的時(shí)間或者時(shí)間戳, 但是有一點(diǎn)請(qǐng)注意 m/d/y 或 d-m-y
格式的日期,如果分隔符是斜線(/),則使用美洲的 m/d/y 格式。如果分隔符是橫杠(-)或者點(diǎn)(.),則使用歐洲的 d-m-y
格式。為了避免潛在的錯(cuò)誤,您應(yīng)該盡可能使用 YYYY-MM-DD 格式或其他格式.
??開(kāi)源協(xié)議
TimeHelper遵循MIT開(kāi)源協(xié)議, 意味著您無(wú)需任何授權(quán),即可免費(fèi)將TimeHelper應(yīng)用到您的項(xiàng)目中
以上就是TimeHelper簡(jiǎn)單快捷PHP日期時(shí)間助手類庫(kù)使用詳解的詳細(xì)內(nèi)容,更多關(guān)于PHP TimeHelper日期時(shí)間助手類庫(kù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
php加水印的代碼(支持半透明透明打水印,支持png透明背景)
一個(gè)簡(jiǎn)單的打水印代碼(圖片水?。С炙⊥该鞫仍O(shè)置,也支持png透明背景格式圖片打水印2013-01-01php使用curl發(fā)送json格式數(shù)據(jù)實(shí)例
這篇文章主要介紹了php使用curl發(fā)送json格式數(shù)據(jù)的實(shí)例,大家參考使用吧2013-12-12windows 2008r2+php5.6.28環(huán)境搭建詳細(xì)過(guò)程
這篇文章主要介紹了windows 2008r2+php5.6.28環(huán)境搭建詳細(xì)過(guò)程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06PHP靜態(tài)調(diào)用非靜態(tài)方法的應(yīng)用分析
本篇文章介紹了,PHP靜態(tài)調(diào)用非靜態(tài)方法的應(yīng)用分析。需要的朋友參考下2013-05-05yii2局部關(guān)閉(開(kāi)啟)csrf的驗(yàn)證的實(shí)例代碼
本篇文章主要介紹了yii2局部關(guān)閉(開(kāi)啟)csrf的驗(yàn)證的實(shí)例代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07Laravel框架DB facade數(shù)據(jù)庫(kù)操作詳解
這篇文章主要介紹了Laravel框架DB facade數(shù)據(jù)庫(kù)操作,結(jié)合實(shí)例形式詳細(xì)分析了laravel數(shù)據(jù)庫(kù)基本創(chuàng)建、連接、增刪改查等操作技巧,需要的朋友可以參考下2019-12-12PHP實(shí)現(xiàn)長(zhǎng)輪詢消息實(shí)時(shí)推送功能代碼實(shí)例講解
這篇文章主要介紹了PHP實(shí)現(xiàn)長(zhǎng)輪詢消息實(shí)時(shí)推送功能代碼實(shí)例講解,文中代碼演示的很清楚,有感興趣的可以研究參考下2021-02-02thinkPHP5.0框架獨(dú)立配置與動(dòng)態(tài)配置方法
這篇文章主要介紹了thinkPHP5.0框架獨(dú)立配置與動(dòng)態(tài)配置方法,結(jié)合實(shí)例形式分析了thinkPHP5.0框架獨(dú)立配置與靜態(tài)配置的功能、實(shí)現(xiàn)技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-03-03