• PHP随手记1--内置函数date


    1. date_default_timezone_set

    date_default_timezone_set — 设定用于一个脚本中所有日期时间函数的默认时区

    在php中只用 mktime() 函数时有时会报错,解决办法是在<?php 后加一行

    date_default_timezone_set('Asia/ShangHai');

    2. date内置函数参数列表

    date — 格式化一个本地时间/日期

    说明:

    string date ( string $format [, int $timestamp ] )

    返回将整数 timestamp 按照给定的格式字串而产生的字符串。如果没有给出时间戳则使用本地当前时间。换句话说,timestamp 是可选的,默认值为 time()

    下面表格引用自php官方手册,放在这里方便查阅:

    d 月份中的第几天,有前导零的 2 位数字 0131
    D 星期中的第几天,文本表示,3 个字母 MonSun
    j 月份中的第几天,没有前导零 131
    l(“L”的小写字母) 星期几,完整的文本格式 SundaySaturday
    N ISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加) 1(表示星期一)到 7(表示星期天)
    S 每月天数后面的英文后缀,2 个字符 stndrd 或者 th。可以和 j 一起用
    w 星期中的第几天,数字表示 0(表示星期天)到 6(表示星期六)
    z 年份中的第几天 0366
    星期 --- ---
    W ISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的) 例如:42(当年的第 42 周)
    --- ---
    F 月份,完整的文本格式,例如 January 或者 March JanuaryDecember
    m 数字表示的月份,有前导零 0112
    M 三个字母缩写表示的月份 JanDec
    n 数字表示的月份,没有前导零 112
    t 给定月份所应有的天数 2831
    --- ---
    L 是否为闰年 如果是闰年为 1,否则为 0
    o ISO-8601 格式年份数字。这和 Y 的值相同,只除了如果 ISO 的星期数(W)属于前一年或下一年,则用那一年。(PHP 5.1.0 新加) Examples: 1999 or 2003
    Y 4 位数字完整表示的年份 例如:19992003
    y 2 位数字表示的年份 例如:9903
    时间 --- ---
    a 小写的上午和下午值 ampm
    A 大写的上午和下午值 AMPM
    B Swatch Internet 标准时 000999
    g 小时,12 小时格式,没有前导零 112
    G 小时,24 小时格式,没有前导零 023
    h 小时,12 小时格式,有前导零 0112
    H 小时,24 小时格式,有前导零 0023
    i 有前导零的分钟数 0059>
    s 秒数,有前导零 0059>
    时区 --- ---
    e 时区标识(PHP 5.1.0 新加) 例如:UTCGMTAtlantic/Azores
    I 是否为夏令时 如果是夏令时为 1,否则为 0
    O 与格林威治时间相差的小时数 例如:+0200
    P 与格林威治时间(GMT)的差别,小时和分钟之间有冒号分隔(PHP 5.1.3 新加) 例如:+02:00
    T 本机所在的时区 例如:ESTMDT(【译者注】在 Windows 下为完整文本格式,例如“Eastern Standard Time”,中文版会显示“中国标准时间”)。
    Z 时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。 -4320043200
    完整的日期/时间 --- ---
    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()

      

    eg:date()函数现实一个时间

      

    1 <?php
    2 echo date("Y-m-d H:i:s",time());
    3 echo "<br />";
    4 echo date("Y-m-d H:i:s",mktime(13,55,0,12,6,2017));
    5 echo "<br />";

      结果显示为:

      

       参数中识别不了的元素会保留下来,用js需要一大串代码的功能,php一行代码就能实现!!!

    3. php实现两个时间的差值和简单日历显示

     1 <meta charset="UTF-8" />
     2 <?php
     3 date_default_timezone_set("Asia/ShangHai");
     4 echo "<h1>自定义一个函数,返回一个时间差(XX天XX小时XX分钟XX秒)</h1>";
     5 
     6 function get_time_diff($time1=0,$time2=0){
     7     if($time1==0&&$time2==0){
     8         $diff = time();
     9     }elseif($time1>0&&$time2==0){
    10         $diff = $time1;
    11     }else{
    12         $diff = abs($time1-$time2);
    13     }
    14 
    15     $s = $diff%60;
    16     $i = floor($diff%3600/60);
    17     $h = floor($diff%(3600*24)/3600);
    18     $d = floor($diff/(3600*24));
    19 
    20     return "<p>".$d."天".$h."小时".$i."分钟".$s."秒</p>";
    21 
    22 }
    23 echo date("Y-m-d H:i:s");
    24 echo get_time_diff();
    25 echo get_time_diff(mktime(0,0,0,1,2,1970));
    26 echo get_time_diff(mktime(0,0,0,12,8,2017),mktime(0,0,0,12,5,2017));
    27 
    28 echo "<h1>自定义一个函数,输出一个日历</h1>";
    29 
    30 function calendar($time=0){
    31     $time = $time>0?$time:time();
    32 
    33     $days = date("t",$time); //当月的总天数
    34 
    35     $first_day = date("w",mktime(0,0,0,date("n",$time),1,date("Y",$time))); //当月1号是星期几
    36 
    37     $rows = ceil(($days+$first_day)/7); //日历动态部分的行数
    38 
    39     $count = 1;
    40 
    41     $current_day = date("j",$time); //当天是几号
    42 
    43     echo "<table border='1'>";
    44     echo "<tr><th colspan='7'>".date("Y年m月",$time)."</th></tr>";
    45     echo "<tr><th>日</th><th>一</th><th>二</th><th>三</th><th>四</th><th>五</th><th>六</th></tr>";
    46     for($i=1;$i<=$rows;$i++){
    47         echo "<tr>";
    48         for($j=0;$j<7;$j++){
    49 
    50             if( ($i==1&&$j<$first_day) || ($i==$rows&&$count>$days) ){
    51                 echo "<td>&nbsp;</td>";
    52             }else{
    53                 if($count==$current_day){
    54                     echo "<td style='color:red;'>".$count."</td>";
    55                 }else{
    56                     echo "<td>".$count."</td>";
    57                 }
    58                 $count++;
    59             }
    60 
    61         }
    62         echo "</tr>";
    63     }
    64     echo "</table>";
    65 }
    66 calendar();
    67 calendar(mktime(0,0,0,10,1,2008));

    运行结果如下:

  • 相关阅读:
    算法15 《啊哈算法》第四章 盒子装扑克-DFS深度优先搜索 递归
    算法14 leetcode28 实现 strStr() kmp
    markdown一些有用笔记
    算法11 leetcode274 有效的字母异位词
    Quantity? Quality!
    算法 10 leetcode344. 反转字符串
    JavaWeb —— JDBC Driver驱动及连接问题
    Python —— 4 习题练习
    Python —— 变量的作用域
    JavaWeb —— 文件上传
  • 原文地址:https://www.cnblogs.com/share-all/p/8006719.html
Copyright © 2020-2023  润新知