zoukankan      html  css  js  c++  java
  • php中的date和strtotime函数妙用

    php中的两个常用的日期相关函数date和strtotime,相信大家一定不陌生。但我们平时使用都只是基本功能,什么时间戳变日期格式,日期格式变时间戳。

    其实这两个函数还有更深的用法:

    1、date函date(format,timestamp) format为格式,timestamp为时间戳(不填默认为当前时间戳)

    关于format有许多选项:
    (1)
      d 月份中的第几天,有前导零的 2 位数字 01 到 31 例如:date('d') 输出:07
      j 月份中的第几天,没有前导零 1 到 31 例如:date('j') 输出:7
      z 年份中的第几天 0 到 365

    (2)星期
      D 星期中的第几天,文本表示,3 个字母 Mon 到 Sun
      l(“L”的小写字母) 星期几,完整的文本格式 Sunday 到 Saturday
      N ISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加) 1(表示星期一)到 7(表示星期天)
      S 每月天数后面的英文后缀,2 个字符 st,nd,rd 或者 th。可以和 j 一起用
      w 星期中的第几天,数字表示 0(表示星期天)到 6(表示星期六)
      W ISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的) 例如:42(当年的第 42 周)
    (3)

      F 月份,完整的文本格式,例如 January 或者 March January 到 December
      n 数字表示的月份,没有前导零 1 到 12

      m 数字表示的月份,有前导零 01 到 12
      M 三个字母缩写表示的月份 Jan 到 Dec
      t 指定的月份有几天 28 到 31
    (4)
      L 是否为闰年 如果是闰年为 1,否则为 0
      o ISO-8601 格式年份数字。这和 Y 的值相同,只除了如果 ISO 的星期数(W)属于前一年或下一年,则用那一年。(PHP 5.1.0 新加) Examples: 1999 or 2003
      Y 4 位数字完整表示的年份 例如:1999 或 2003
      y 2 位数字表示的年份 例如:99 或 03
    (5)时间
       a 小写的上午和下午值 am 或 pm
      A 大写的上午和下午值 AM 或 PM
      B Swatch Internet 标准时 000 到 999
      g 小时,12 小时格式,没有前导零 1 到 12
      G 小时,24 小时格式,没有前导零 0 到 23
      h 小时,12 小时格式,有前导零 01 到 12
      H 小时,24 小时格式,有前导零 00 到 23
      i 有前导零的分钟数 00 到 59
      s 秒数,有前导零 00 到 59
      u 毫秒 (PHP 5.2.2 新加)。需要注意的是 date() 函数总是返回 000000 因为它只接受 integer 参数, 而 DateTime::format() 才支持毫秒。 示例: 654321
    (6)时区
      e 时区标识(PHP 5.1.0 新加) 例如:UTC,GMT,Atlantic/Azores
      I 是否为夏令时 如果是夏令时为 1,否则为 0
      O 与格林威治时间相差的小时数 例如:+0200
      P 与格林威治时间(GMT)的差别,小时和分钟之间有冒号分隔(PHP 5.1.3 新加) 例如:+02:00
      T 本机所在的时区 例如:EST,MDT(【译者注】在 Windows 下为完整文本格式,例如“Eastern Standard Time”,中文版会显示“中国标准时间”)。
      Z 时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。 -43200 到 43200
    (7)完整的日期/时间
      c ISO 8601 格式的日期(PHP 5 新加) 2004-02-12T15:19:21+00:00
      r RFC 822 格式的日期 例如:Thu, 21 Dec 2000 16:01:07 +0200
      U 从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数 跟time()一样
    2、strtotime函数
    strtotime(time,now);
    time为规定的日期字符串,一般为YYYY-MM-DD H:i:s 2018-05-01 07:50:10
    now为时间戳,规定用来计算返回值的时间戳。如果省略该参数,则使用当前时间。
    echo(strtotime("now") ."<br>");//返回当前时间戳
    echo(strtotime("15 October 1980") . "<br>");//返回指定日期时间戳
    echo(strtotime("+5 hours") . "<br>"); //返回5个小时候的时间戳
    echo(strtotime("+1 week") . "<br>");//返回一周后的现在
    echo(strtotime("+1 week 3 days 7 hours 5 seconds") . "<br>");//返回一周后的现在再加三天7小时5秒后的时间戳
    echo(strtotime("next Monday") . "<br>");//返回下一个星期一时间戳
    echo(strtotime("last Sunday"));//返回上一个星期天时间戳

    同样的还有

    strtotime("-1 day");//昨天的现在时间戳

    strtotime("+1 day");//明天的现在时间戳

    特别注意,获取上个月的今天,上个月的最后一天,上个月的第一天

        echo date('Y-m-d', strtotime(date('Y-m-01') . ' -1 month')); // 计算出本月第一天再减一个月
        echo date('Y-m-d', strtotime(date('Y-m-01') . ' -1 day')); // 计算出本月第一天再减一天
    //获取当月第一天及最后一天.
       echo date('Y-m-01',strtotime('0 day'));
       echo date('Y-m-t', strtotime('0 day'));
    //获取当天年份、月份、日及天数.
       echo " 本月共有:".date("t")."天";
       echo " 当前年份".date('Y');
       echo " 当前月份".date('m');
       echo " 当前几号".date('d');
     
    /**
     * 计算上一个月的今天,如果上个月没有今天,则返回上一个月的最后一天
     * @param type $time
     * @return type
     */
    $time = strtotime("2018-07-31");
    function last_month_today($time){
        $last_month_time = mktime(date("G", $time), date("i", $time),date("s", $time), date("n", $time), 0, date("Y", $time));
        $last_month_t =  date("t", $last_month_time);
        if ($last_month_t < date("j", $time)) {
            return date("Y-m-t H:i:s", $last_month_time);
        }
        return date(date("Y-m", $last_month_time) . "-d", $time);
    }
    echo last_month_today($time);

    mktime使用格式:

    mktime(hour,minute,second,month,day,year,is_dst); 返回日期的时间戳(不是GMT日期,根据配置文件配置的时区)

    gmmktime(hour,minute,second,month,day,year,is_dst); 返回日期的时间戳(是GMT日期,北京时间应该减8小时)

      
      


  • 相关阅读:
    IOS-在ARC项目中使用非ARC框架或者类库
    IOS-Social.framework
    IOS- 单例
    IOS-二维码的实现
    IOS-JSON & XML解析
    SCOI2011 地板 (BZOJ2331)
    Formula 1(URAL1519)
    Tour in the Castle(ZOJ3256 矩阵加速插头dp)
    Tony's tour(poj1739,男人题之一,插头dp)
    POJ3133(插头dp)
  • 原文地址:https://www.cnblogs.com/myIvan/p/9436658.html
Copyright © 2011-2022 走看看