电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

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

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

    問題描述

    時間在我們日常的代碼編寫中會是經常出現的篩選或排序條件,尤其是一些特殊時間節點的時間顯得尤為突出,例如昨天,當前日期,當前月份,當前季度,以及當前年份的開始以及結束的時間戳,今天對部分相對簡便的方法進行了部分整理。

    解決方案

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

    今天時間戳與日期

    時間戳

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

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

    日期格式

    相應的,咱們可以直接字符串拼接實現日期格式的顯示。

    //弱類型語言,直接拼接字符串
     $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;
    

    日期格式

    方法一: 根據時間戳轉日期格式

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

    新想法:根據首先獲取當前天日期,然后使用date函數進行時間格式轉換

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

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

    本周時間戳與日期

    時間戳

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

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

    方法一:

    //本周開始時間戳
    $startTime = mktime(0,0,0,date("m"),date("d")-date("w")+1,date("y"));
    //本周結束時間戳
    $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; //本周最后一天
    

    日期格式

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

    //本周開始時間戳
    $startTime = date("Y-m-d H:i:s",mktime(0,0,0,date("m"),date("d")-date("w")+1,date("y")));
    //本周結束時間戳
    $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"));  
    //本月結束時間時間戳
    $overTime =mktime(23,59,59,date("m"),date("t"),date("Y")); 
    

    日期格式

    使用date( )函數進行時間戳轉換日期格式。

    //本月起始時間日期格式
    $startTime = date("Y-m-d H:i:s",mktime(0,0,0,date("m"),1,date("Y")));  
    //本月結束時間日期格式
    $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"));
     //獲取當前季度結束時間戳
    $overTime = mktime(23,59,59,$season*3,date("t",mktime(0, 0 , 0,$season*3,1,date("Y"))),date("Y"));
    

    日期格式

    把上面的時間戳轉換為日期格式

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

    當前年時間戳和日期

    時間戳

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

    日期格式

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

    strtotime函數獲取描述對應時間

    明天當前時間

    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"))//日期格式
    

    時間戳轉日期格式

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

    日期格式轉時間戳

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

    獲取特定時間戳函數

    /**特定時間戳函數
     * @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;
    }

    寫在最后

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

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

    標簽: PHP
    主站蜘蛛池模板: 活性氧化铝球|氧化铝干燥剂|分子筛干燥剂|氢氧化铝粉-淄博同心材料有限公司 | 选矿设备-新型重选设备-金属矿尾矿重选-青州冠诚重工机械有限公司 | 车件|铜件|车削件|车床加工|五金冲压件-PIN针,精密车件定制专业厂商【东莞品晔】 | 沉降天平_沉降粒度仪_液体比重仪-上海方瑞仪器有限公司 | 杭州营业执照代办-公司变更价格-许可证办理流程_杭州福道财务管理咨询有限公司 | 棕刚玉_白刚玉_铝酸钙-锐石新材料| 水冷式工业冷水机组_风冷式工业冷水机_水冷螺杆冷冻机组-深圳市普威机械设备有限公司 | 滚筒烘干机_转筒烘干机_滚筒干燥机_转筒干燥机_回转烘干机_回转干燥机-设备生产厂家 | 德州网站制作 - 网站建设设计 - seo排名优化 -「两山建站」 | 蓝鹏测控平台 - 智慧车间系统 - 车间生产数据采集与分析系统 | 蓝牙音频分析仪-多功能-四通道-八通道音频分析仪-东莞市奥普新音频技术有限公司 | 置顶式搅拌器-优莱博化学防爆冰箱-磁驱搅拌器-天津市布鲁克科技有限公司 | 【法利莱住人集装箱厂家】—活动集装箱房,集装箱租赁_大品牌,更放心 | 东莞喷砂机-喷砂机-喷砂机配件-喷砂器材-喷砂加工-东莞市协帆喷砂机械设备有限公司 | 【MBA备考网】-2024年工商管理硕士MBA院校/报考条件/培训/考试科目/提前面试/考试/学费-MBA备考网 | 电磁流量计厂家_涡街流量计厂家_热式气体流量计-青天伟业仪器仪表有限公司 | 快干水泥|桥梁伸缩缝止水胶|伸缩缝装置生产厂家-广东广航交通科技有限公司 | 开业庆典_舞龙舞狮_乔迁奠基仪式_开工仪式-神挚龙狮鼓乐文化传媒 | PTFE接头|聚四氟乙烯螺丝|阀门|薄膜|消解罐|聚四氟乙烯球-嘉兴市方圆氟塑制品有限公司 | 四探针电阻率测试仪-振实密度仪-粉末流动性测定仪-宁波瑞柯微智能 | 深圳市超时尚职业培训学校,培训:月嫂,育婴,养老,家政;化妆,美容,美发,美甲. | 盘式曝气器-微孔曝气器-管式曝气器-曝气盘-斜管填料 | 郑州市前程水处理有限公司 | 丹佛斯压力传感器,WISE温度传感器,WISE压力开关,丹佛斯温度开关-上海力笙工业设备有限公司 | 光伏家 - 太阳能光伏发电_分布式光伏发电_太阳能光伏网 | 海日牌清洗剂-打造带电清洗剂、工业清洗剂等清洗剂国内一线品牌 海外整合营销-独立站营销-社交媒体运营_广州甲壳虫跨境网络服务 | 软装设计-提供软装装饰和软装配饰及软装陈设的软装设计公司 | 菏泽知彼网络科技有限公司 | 布袋除尘器-单机除尘器-脉冲除尘器-泊头市兴天环保设备有限公司 布袋除尘器|除尘器设备|除尘布袋|除尘设备_诺和环保设备 | 小型UV打印机-UV平板打印机-大型uv打印机-UV打印机源头厂家 |松普集团 | 陕西华春网络科技股份有限公司 | 净化车间装修_合肥厂房无尘室设计_合肥工厂洁净工程装修公司-安徽盛世和居装饰 | 政府园区专业委托招商平台_助力企业选址项目快速落地_东方龙商务集团 | 动力配电箱-不锈钢配电箱-高压开关柜-重庆宇轩机电设备有限公司 聚天冬氨酸,亚氨基二琥珀酸四钠,PASP,IDS - 远联化工 | 比士亚-专业恒温恒湿酒窖,酒柜,雪茄柜的设计定制 | 匀胶机旋涂仪-声扫显微镜-工业水浸超声-安赛斯(北京)科技有限公司 | 石英砂矿石色选机_履带辣椒色选机_X光异物检测机-合肥幼狮光电科技 | 双能x射线骨密度检测仪_dxa骨密度仪_双能x线骨密度仪_品牌厂家【品源医疗】 | 带锯机|木工带锯机圆木推台锯|跑车带锯机|河北茂业机械制造有限公司| | sfp光模块,高速万兆光模块工厂-性价比更高的光纤模块制造商-武汉恒泰通 | 成都租车_成都租车公司_成都租车网_众行宝 | ERP企业管理系统永久免费版_在线ERP系统_OA办公_云版软件官网 |