色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

PHP獲取特殊時(shí)間戳的方法整理

瀏覽:184日期:2022-06-06 18:52:38
目錄
  • 問題描述
  • 解決方案
  • 今天時(shí)間戳與日期
    • 時(shí)間戳
    • 日期格式
  • 昨天時(shí)間戳與日期
    • 日期格式
  • 本周時(shí)間戳與日期
    • 時(shí)間戳
    • 日期格式
  • 本月時(shí)間戳和日期
    • 時(shí)間戳
    • 日期格式
  • 本季度時(shí)間戳和日期
    • 時(shí)間戳
    • 日期格式
  • 當(dāng)前年時(shí)間戳和日期
    • 時(shí)間戳
    • 日期格式
  • strtotime函數(shù)獲取描述對應(yīng)時(shí)間
    • 明天當(dāng)前時(shí)間
    • 昨天當(dāng)前時(shí)間
    • 下個星期當(dāng)前時(shí)間
    • 上個星期當(dāng)前時(shí)間
    • 下星期幾當(dāng)前時(shí)間
    • 上星期幾當(dāng)前時(shí)間
    • 時(shí)間戳轉(zhuǎn)日期格式
    • 日期格式轉(zhuǎn)時(shí)間戳
    • 獲取特定時(shí)間戳函數(shù)
  • 寫在最后

    問題描述

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

    解決方案

    話不多說,稍微進(jìn)行分類,貼代碼。

    今天時(shí)間戳與日期

    時(shí)間戳

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

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

    日期格式

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

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

    昨天時(shí)間戳與日期

    時(shí)間戳

     $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ù)時(shí)間戳轉(zhuǎn)日期格式

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

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

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

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

    本周時(shí)間戳與日期

    時(shí)間戳

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

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

    方法一:

    //本周開始時(shí)間戳
    $startTime = mktime(0,0,0,date("m"),date("d")-date("w")+1,date("y"));
    //本周結(jié)束時(shí)間戳
    $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)換時(shí)間戳,也可以用上面的方法進(jìn)行date()函數(shù)中格式,進(jìn)行轉(zhuǎn)換。

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

    本月時(shí)間戳和日期

    時(shí)間戳

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

    日期格式

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

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

    本季度時(shí)間戳和日期

    時(shí)間戳

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

    日期格式

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

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

    當(dāng)前年時(shí)間戳和日期

    時(shí)間戳

    //本年開始  
    $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)時(shí)間

    明天當(dāng)前時(shí)間

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

    昨天當(dāng)前時(shí)間

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

    下個星期當(dāng)前時(shí)間

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

    上個星期當(dāng)前時(shí)間

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

    下星期幾當(dāng)前時(shí)間

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

    上星期幾當(dāng)前時(shí)間

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

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

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

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

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

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

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

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

    標(biāo)簽: PHP
    主站蜘蛛池模板: 亚洲 中文 欧美 日韩 在线人 | 玖草视频在线 | 美女扒开腿让男人桶尿口 | 色视频一区二区三区 | 欧美成人怡红院在线观看 | 欧美视频一区二区三区精品 | 韩国免费一级成人毛片 | 欧美透逼视频 | 亚洲欧美视频在线 | pgone太大了兽王免费视频 | 国产成人丝袜网站在线观看 | 成人欧美日韩视频一区 | 国产三级日产三级韩国三级 | 亚洲 欧美 视频 | 国产乱子伦露脸对白在线小说 | 亚洲国产综合久久精品 | 日本一级aaaa特黄毛片 | 国产一级毛片国语版 | 国产精品久久久久久免费 | 99精品国产一区二区三区 | 亚洲免费在线视频播放 | 综合爱爱网| 亚洲伊人色综合网站亚洲伊人 | 久久久一本精品99久久精品66 | 久久久久免费观看 | 老外黑人欧美一级毛片 | 国产国语一级毛片全部 | 国产精品久久不卡日韩美女 | 国产精品视频99 | 国产萌白酱在线一区二区 | 国产精品v欧美精品v日本精 | 国产美女在线精品观看 | 欧美亚洲国产激情一区二区 | 中国高清色视频www 中国黄色网址大全 | 日本a级三级三级三级久久 日本a级特黄三级三级三级 | 国产禁女女网站免费看 | 毛片一级在线观看 | 美女一级ba大片免色野外 | 国产成人精品午夜二三区 | 亚洲欧美综合一区二区三区四区 | 男女午夜爽爽 |