zoukankan      html  css  js  c++  java
  • PHP 各种时间处理

    时间参数详解

      a - "am" 或是 "pm"

      A - "AM" 或是 "PM"

      d - 几日,二位数字,若不足二位则前面补零; 如: "01" 至 "31"

      D - 星期几,三个英文字母; 如: "Fri"

      F - 月份,英文全名; 如: "January"

      h - 12 小时制的小时; 如: "01" 至 "12"

      H - 24 小时制的小时; 如: "00" 至 "23"

      g - 12 小时制的小时,不足二位不补零; 如: "1" 至 12"

      G - 24 小时制的小时,不足二位不补零; 如: "0" 至 "23"

      i - 分钟; 如: "00" 至 "59"

      j - 几日,二位数字,若不足二位不补零; 如: "1" 至 "31"

      l - 星期几,英文全名; 如: "Friday"

      m - 月份,二位数字,若不足二位则在前面补零; 如: "01" 至 "12"

      n - 月份,二位数字,若不足二位则不补零; 如: "1" 至 "12"

      M - 月份,三个英文字母; 如: "Jan"

      s - 秒; 如: "00" 至 "59"

      S - 字尾加英文序数,二个英文字母; 如: "th","nd"

      t - 指定月份的天数; 如: "28" 至 "31"

      U - 总秒数

      w - 数字型的星期几,如: "0" (星期日) 至 "6" (星期六)

      Y - 年,四位数字; 如: "1999"

      y - 年,二位数字; 如: "99"

      z - 一年中的第几天; 如: "0" 至 "365"

    实例代码

     1 <?php
     2 $timetype = isset($request['timetype']) ? (int)$request['timetype'] : 3;//选择时间 1:今天 2:本周 3:本月 4:全年 
     3 switch ($timetype) { 
     4   case 1://【今天】的开始和结束时间戳 
     5     $begintime = mktime(0, 0, 0, date('m'), date('d'), date('Y')); 
     6     $endtime = mktime(23, 59, 59, date('m'), date('d'), date('Y')); 
     7     //方法2 
     8     //$begintime = strtotime(date('Y-m-d 00:00:00')); 
     9     //$endtime = strtotime(date('Y-m-d 23:59:59')); 
    10     break; 
    11   case 2://【本周】的开始和结束时间戳 
    12     $begintime = mktime(0, 0, 0, date("m"), date("d") - date("w") + 1, date("Y")); 
    13     $endtime = mktime(23, 59, 59, date("m"), date("d") - date("w") + 7, date("Y")); 
    14     break; 
    15   case 3://【本月】的开始和结束时间戳 
    16     $begintime = mktime(0, 0, 0, date('m'), 1, date('Y')); 
    17     $endtime = mktime(23, 59, 59, date('m'), date('t'), date('Y')); 
    18     break; 
    19   case 4://【全年】的开始和结束时间戳 
    20     $begintime = mktime(0, 0, 0, 1, 1, date("Y")); 
    21     $endtime = mktime(23, 59, 59, 12, 31, date("Y")); 
          break; 22   } 23 ?>

    指定某个月的开始和结束时间戳

    1 <?php
    2 $dateline = strtotime($date); // $date如:2019-10
    3 $firstdaystr = strtotime(date("Y-m-01", $dateline));
    4 $lastdaystr = strtotime(date('Y-m-d 23:59:59', strtotime("$date +1 month -1 day")));
    5 ?>

    大月小月问题

    1 <?php
    2 $date = date('Y-m-d',strtotime('last day of -1 month',strtotime('2018-07-31')));//(加上last day of)结果为 2018-06-30 否则 2018-07-01 
    3 $date = date('Y-m-d',strtotime('first day of -1 month',strtotime('2018-07-31')));//(加上first day of)结果为 2018-06-01 否则 2018-07-01 
    4 $date = date('Y-m-d',strtotime('last day of +1 month',strtotime('2018-08-31')));//(加上last day of)结果为 2018-09-30 否则 2018-10-01
    5 
    6 ?>

    指定日期语言

    语言代码参考

    1 1 <?php
    2 2 setlocale(LC_TIME, 'it');//切换到意大利 
    3 echo utf8_encode( strftime("%a %d %b %Y", $dateline) );//传入时间戳 
    4 setlocale(LC_TIME, NULL);重置到当前系统默认地区
    5 3 ?>

    时区设置

    <?php
    //方法1、通过时区
    
    date_default_timezone_set("UTC/GMT-8");//这是格林威治标准时间,得到的时间和默认时区是一样的
    date_default_timezone_set("Etc/GMT+8");//这里比格林威治标准时间慢8小时
    date_default_timezone_set("Etc/GMT-8");//这里比格林威治标准时间快8小时
    
    //方法2、通过区域 区域列表:https://www.php.net/manual/zh/timezones.php
    date_default_timezone_set('America/New_York');
    
    ?>

    生成某月的日期列表

    <?php
    /**
         * @description 生成某个月的所有日期
         * @param $date 某个月2020-3
         * @return array
         */
          function get_month_day($date){
           
            $dateline = strtotime($date);
            $now_date = date('Y-m-d');//当前日期
    
            $new_now_month = date('Y-n',strtotime($now_date));
            //如果是当前月,仅显示已经过的日期
            if($date == $new_now_month){
                $j = date('j');
            }else{
                $j = date("t",$dateline);
            }
            //获取指定月第一天时间戳
            $start_time = strtotime(date('Y-m-01',$dateline));
            $array = array();
            for($i=0;$i<$j;$i++){
                $array[] = date('Y-m-d',$start_time+$i*86400);
            }
            return $array;
        }
    
    ?>
  • 相关阅读:
    Github 上 36 个最实用的 Vue 开源库
    C 语言快速入门,21 个小项目足矣!「不走弯路就是捷径」
    18个挑战项目带你快速入门深度学习
    Linux 运维入门到跑路书单推荐
    Python 网络爬虫的常用库汇总
    45 个常用Linux 命令,让你轻松玩转Linux!
    [新手必备]Python 基础入门必学知识点笔记
    快速入门 Python 数据分析实用指南
    18位不重复订单号
    相对路径转绝对路径
  • 原文地址:https://www.cnblogs.com/guliang/p/11730721.html
Copyright © 2011-2022 走看看