最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP獲取特殊時間戳的方法整理

 更新時間:2023年01月10日 11:33:21   作者:于先生吖  
時間在我們?nèi)粘5拇a編寫中會是經(jīng)常出現(xiàn)的篩選或排序條件,尤其是一些特殊時間節(jié)點的時間顯得尤為突出。今天對部分相對簡便的方法進行了部分整理,需要的可以參考一下

問題描述

時間在我們?nèi)粘5拇a編寫中會是經(jīng)常出現(xiàn)的篩選或排序條件,尤其是一些特殊時間節(jié)點的時間顯得尤為突出,例如昨天,當前日期,當前月份,當前季度,以及當前年份的開始以及結(jié)束的時間戳,今天對部分相對簡便的方法進行了部分整理。

解決方案

話不多說,稍微進行分類,貼代碼。

今天時間戳與日期

時間戳

當前天的時間戳直接使用當前時間格式,指定起始以及結(jié)束時間來實現(xiàn)快速拿到時間戳的效果。

 $startTime = strtotime(date('Y-m-d').'00:00:00');
 $overTime = strtotime(date('Y-m-d').'23:59:59');

日期格式

相應(yīng)的,咱們可以直接字符串拼接實現(xiàn)日期格式的顯示。

//弱類型語言,直接拼接字符串
 $startDate=date('Y-m-d').' 00:00:00';
 $overDate=date('Y-m-d').' 00:00:00';

昨天時間戳與日期

時間戳

 $startTime = mktime(0,0,0,date('m'),date('d')-1,date('Y'));
 $overTime = mktime(0,0,0,date('m'),date('d'),date('Y'))-1;

日期格式

方法一: 根據(jù)時間戳轉(zhuǎn)日期格式

//根據(jù)上面的時間戳進行格式轉(zhuǎn)換
 $startDate=date("Y-m-d H:i:s",$startTime);
 $overDate =date("Y-m-d H:i:s",$overTime);

新想法:根據(jù)首先獲取當前天日期,然后使用date函數(shù)進行時間格式轉(zhuǎn)換

//獲取當前日期的天數(shù)的數(shù)值減一之后就是昨天啦
 $time=date('d')-1;
 $startDate=date("Y-m-".$time." 00:00:00",time());
 $overDate=date("Y-m-".$time." 23:59:59",time());

但是在月初時會出現(xiàn)日期為0的異常,除了進行判斷,不知道有沒有其他簡便的方法可以解決,不然還是時間戳轉(zhuǎn)日期格式比較簡便,希望有簡單解決辦法的大佬給點新想法。

本周時間戳與日期

時間戳

date( )函數(shù)中 date(‘w’) 可以獲取今天是本周第幾天,通過簡單處理就可以得到本周的起始以及結(jié)束時間。

這種思路和方法可以推廣到上周的起始和結(jié)束時間。

方法一:

//本周開始時間戳
$startTime = mktime(0,0,0,date('m'),date('d')-date('w')+1,date('y'));
//本周結(jié)束時間戳
$overTime = mktime(23,59,59,date('m'),date('d')-date('w')+7,date('y'));

方法二:

 $nowDate = date("Y-m-d");
 $week = date('w',strtotime($nowDate));
 $startTime = strtotime("$nowDate -".($week ? $week - 1 : 6).' days');//本周第一天
 $overTime = $start_time + 86400*7 -1; //本周最后一天

日期格式

使用日期格式函數(shù)轉(zhuǎn)換時間戳,也可以用上面的方法進行date()函數(shù)中格式,進行轉(zhuǎn)換。

//本周開始時間戳
$startTime = date("Y-m-d H:i:s",mktime(0,0,0,date('m'),date('d')-date('w')+1,date('y')));
//本周結(jié)束時間戳
$overTime = date("Y-m-d H:i:s",mktime(23,59,59,date('m'),date('d')-date('w')+7,date('y')));

本月時間戳和日期

時間戳

//本月起始時間時間戳
$startTime =mktime(0,0,0,date('m'),1,date('Y'));  
//本月結(jié)束時間時間戳
$overTime =mktime(23,59,59,date('m'),date('t'),date('Y')); 

日期格式

使用date( )函數(shù)進行時間戳轉(zhuǎn)換日期格式。

//本月起始時間日期格式
$startTime = date("Y-m-d H:i:s",mktime(0,0,0,date('m'),1,date('Y')));  
//本月結(jié)束時間日期格式
$overTime = date("Y-m-d H:i:s",mktime(23,59,59,date('m'),date('t'),date('Y'))); 

本季度時間戳和日期

時間戳

 //獲取當前季度
$season = ceil((date('m'))/3);
 //當前季度開始時間戳
$startTime = mktime(00,00,00,$season*2+1,1,date('Y'));
 //獲取當前季度結(jié)束時間戳
$overTime = mktime(23,59,59,$season*3,date('t',mktime(0, 0 , 0,$season*3,1,date("Y"))),date('Y'));

日期格式

把上面的時間戳轉(zhuǎn)換為日期格式

date("Y-m-d",$startTime)
date("Y-m-d",$overTime)

當前年時間戳和日期

時間戳

//本年開始  
$startTime  = strtotime(date("Y",time())."-1"."-1"); 
//本年結(jié)束
$overTime  = strtotime(date("Y",time())."-12"."-31");  

日期格式

//本年開始  
$startTime  = date("Y-m-d H:i:s",strtotime(date("Y",time())."-1"."-1"));
//本年結(jié)束
$overTime  =  date("Y-m-d H:i:s",strtotime(date("Y",time())."-12"."-31"));  

strtotime函數(shù)獲取描述對應(yīng)時間

明天當前時間

strtotime("+1 day")//時間戳

date("Y-m-d H:i:s",strtotime("+1 day"))//日期格式

昨天當前時間

strtotime("-1 day")//時間戳

date("Y-m-d H:i:s",strtotime("-1 day"))//日期格式

下個星期當前時間

strtotime("+1 week")//時間戳

date("Y-m-d H:i:s",strtotime("+1 week"))//日期格式

上個星期當前時間

strtotime("-1 week")//時間戳

date("Y-m-d H:i:s",strtotime("-1 week"))//日期格式

下星期幾當前時間

strtotime("next Thursday")//時間戳

date("Y-m-d H:i:s",strtotime("next Thursday"))//日期格式

上星期幾當前時間

strtotime("last Thursday")//時間戳

date("Y-m-d H:i:s",strtotime("last Thursday"))//日期格式

時間戳轉(zhuǎn)日期格式

$timestamp =1664170375;//當前時間戳
date("Y-m-d H:i:s",$timestamp);//轉(zhuǎn)換為日期格式

日期格式轉(zhuǎn)時間戳

$time = '2022-09-26 23:31:59';//時間格式參數(shù)
strtotime($time);//轉(zhuǎn)換為時間戳

獲取特定時間戳函數(shù)

/**特定時間戳函數(shù)
 * @param $targetTime
 */
function gettimestamp($targetTime){
    switch ($targetTime){
        case 'today'://今天
            $timeamp['start'] = strtotime(date('Y-m-d'));
            $timeamp['over'] = strtotime(date('Y-m-d',strtotime('+1 day')));
            break;
        case 'yesterday'://昨天
            $timeamp['start'] = strtotime(date('Y-m-d',strtotime('-1 day')));
            $timeamp['over'] = strtotime(date('Y-m-d'));
            break;
        case 'beforyesterday'://前天
            $timeamp['start'] = strtotime(date('Y-m-d',strtotime('-2 day')));
            $timeamp['over'] = strtotime(date('Y-m-d',strtotime('-1 day')));
            break;
        case 'beforweek'://本周
            $timeamp['start'] = strtotime(date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),date("d")-date("w")+1,date("Y"))));
            $timeamp['over'] = strtotime(date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-date("w")+7,date("Y"))));
            break;
        case 'nowmonth'://本月
            $timeamp['start'] = strtotime(date('Y-m-01'));
            $timeamp['over'] = strtotime(date('Y-m-d',strtotime('+1 day')));
            break;
        case 'permonth'://上月
            $timeamp['start'] = strtotime(date('Y-m-01',strtotime('-1 month')));
            $timeamp['over'] = strtotime(date('Y-m-01'));
            break;
        case 'preweek'://上周 注意我們是從周一開始算
            $timeamp['start'] = strtotime(date('Y-m-d',strtotime('-2 week Monday')));
            $timeamp['over'] = strtotime(date('Y-m-d',strtotime('-1 week Monday +1 day')));
            break;
        case 'nowweek'://本周
            $timeamp['start'] = strtotime(date('Y-m-d',strtotime('-1 week Monday')));
            $timeamp['over'] = strtotime(date('Y-m-d',strtotime('+1 day')));
            break;
        case 'preday'://30
            $timeamp['start'] = strtotime(date('Y-m-d'),strtotime($param.' day'));
            $timeamp['end'] = strtotime(date('Y-m-d'));
            break;
        case 'nextday'://30
            $timeamp['start'] = strtotime(date('Y-m-d'));
            $timeamp['over'] = strtotime(date('Y-m-d'),strtotime($param.' day'));
            break;
        case 'preyear'://去年
            $timeamp['start'] = strtotime(date('Y-01-01',strtotime('-1 year')));
            $timeamp['over'] = strtotime(date('Y-12-31',strtotime('-1 year')));
            break;
        case 'nowyear'://今年
            $timeamp['start'] = strtotime(date('Y-01-01'));
            $timeamp['over'] = strtotime(date('Y-m-d',strtotime('+1 day')));
            break;
        case 'quarter'://季度
            $quarter = ceil((date('m'))/3);
            $timeamp['start'] = mktime(0, 0, 0,$quarter*3-2,1,date('Y'));
            $timeamp['over'] = mktime(0, 0, 0,$quarter*3+1,1,date('Y'));
            break;
        default:
            $timeamp['start'] = strtotime(date('Y-m-d'));
            $timeamp['over'] = strtotime(date('Y-m-d',strtotime('+1 day')));
            break;
    }
    return $timeamp;
}

寫在最后

小發(fā)現(xiàn):在進行測試的時候發(fā)現(xiàn)了 date()函數(shù)比較有意思的地方,可以直接拼接結(jié)果,當你把y-m-d h:i:s中的一部分寫死后仍然是可以執(zhí)行的,結(jié)果就是你寫死的數(shù)值,后面有機會深入研究下底層代碼,好像是在C語言中,結(jié)構(gòu)體來實現(xiàn)日期以及時間戳的格式,傳參是進行了判斷,所以可以達到不同形式的顯示。strtotime() 函數(shù)也很巧妙,牛哇牛哇

到此這篇關(guān)于PHP獲取特殊時間戳的方法整理的文章就介紹到這了,更多相關(guān)PHP獲取特殊時間戳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PHP創(chuàng)建文件,并向文件中寫入數(shù)據(jù),覆蓋,追加的實現(xiàn)代碼

    PHP創(chuàng)建文件,并向文件中寫入數(shù)據(jù),覆蓋,追加的實現(xiàn)代碼

    這篇文章主要介紹了PHP創(chuàng)建文件,并向文件中寫入數(shù)據(jù),覆蓋,追加的實現(xiàn)代碼,需要的朋友可以參考下
    2016-03-03
  • PHP strtotime函數(shù)詳解

    PHP strtotime函數(shù)詳解

    strtotime函數(shù)是一個很好的函數(shù),靈活的運用它,會給你的工作帶來不少方便.但PHP的手冊中卻對此函數(shù)的參數(shù)沒作太多介紹,對些函數(shù)的其他介紹也非常少。
    2009-12-12
  • PHP隊列原理及基于隊列的寫文件案例

    PHP隊列原理及基于隊列的寫文件案例

    這篇文章主要介紹了PHP隊列原理及基于隊列的寫文件案例,較為詳細的分析了隊列的原理、定義方法并結(jié)合實例形式給出了php基于隊列的寫文件操作技巧,需要的朋友可以參考下
    2017-11-11
  • PHP用PDO如何封裝簡單易用的DB類詳解

    PHP用PDO如何封裝簡單易用的DB類詳解

    PDO(php Data Object)是PHP的數(shù)據(jù)對象,它為PHP訪問數(shù)據(jù)庫提供了一種兼容一致的輕量級接口,也就是提供了一個數(shù)據(jù)庫訪問抽象層,這篇文章主要給大家介紹了關(guān)于PHP用PDO如何封裝簡單易用的DB類的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07
  • php中動態(tài)調(diào)用函數(shù)的方法

    php中動態(tài)調(diào)用函數(shù)的方法

    這篇文章主要介紹了php中動態(tài)調(diào)用函數(shù)的方法,實例分析了php動態(tài)函數(shù)的實現(xiàn)原理與具體實現(xiàn)步驟,需要的朋友可以參考下
    2015-03-03
  • PHP讀取TXT文本內(nèi)容的五種實用方法小結(jié)

    PHP讀取TXT文本內(nèi)容的五種實用方法小結(jié)

    PHP作為一種流行的服務(wù)器端腳本語言,提供了多種方法來讀取TXT文本內(nèi)容,本文主要為大家詳細介紹五種不同的PHP方法,希望對大家有所幫助
    2024-01-01
  • php中出現(xiàn)空白頁的原因及解決方法匯總

    php中出現(xiàn)空白頁的原因及解決方法匯總

    這篇文章主要介紹了php中出現(xiàn)空白頁的原因及解決方法匯總,對于PHP程序開發(fā)人員來說很有參考借鑒價值,需要的朋友可以參考下
    2014-07-07
  • 使用 MySQL Date/Time 類型

    使用 MySQL Date/Time 類型

    上次對于 MySQL 方面已經(jīng)有的一些總結(jié),但是昨晚 wiLdGoose 兄說他也碰到同樣的問題,但是無法解決。結(jié)果經(jīng)過種種的假設(shè)和判斷以后,到最后發(fā)現(xiàn)原來是 Zend Studio 的時區(qū)配置問題(我狂汗ing)。而在和他討論期間也談到了很多關(guān)于 MySQL 的細節(jié)問題,還是記錄一下當作備忘比較好。這篇文章同時也做說服 wiLdGoose 兄用。
    2008-03-03
  • 如何讓thinkphp在模型中自動完成session賦值小教程

    如何讓thinkphp在模型中自動完成session賦值小教程

    在項目中遇到一個問題,需要讓thinkphp在模型中自動完成session賦值,經(jīng)過一番研究,終于實現(xiàn),下面記錄一下,另附上thinkPHP的session的相關(guān)知識
    2014-09-09
  • Laravel中擴展Memcached緩存驅(qū)動實現(xiàn)使用阿里云OCS緩存

    Laravel中擴展Memcached緩存驅(qū)動實現(xiàn)使用阿里云OCS緩存

    這篇文章主要介紹了Laravel中擴展Memcached緩存驅(qū)動實現(xiàn)使用阿里云OCS緩存,本文擴展了一個支持SASL 認證模式的Memcached緩存驅(qū)動,需要的朋友可以參考下
    2015-02-02

最新評論

宝鸡市| 武宣县| 五大连池市| 澜沧| 大同县| 万山特区| 彰化县| 石阡县| 丽水市| 忻城县| 额敏县| 滁州市| 松桃| 罗田县| 清河县| 梁山县| 庆阳市| 顺昌县| 青川县| 潞西市| 斗六市| 巴南区| 海淀区| 鄂托克前旗| 阜新| 柳河县| 平潭县| 清丰县| 京山县| 富阳市| 开原市| 兴城市| 城口县| 健康| 镇巴县| 晴隆县| 古蔺县| 江华| 政和县| 荣昌县| 景洪市|