PHP 日期和时间

  • PHP 日期和时间

    日期是日常生活的重要组成部分,无需思考即可轻松与他们合作。PHP还提供了强大的日期算术工具,可以轻松操作日期。
  • time()获得时间戳

    PHP的time()函数为您提供有关当前日期和时间的所有信息。它不需要参数但返回一个整数。time()返回的整数表示自1970年1月1日格林尼治标准时间午夜起经过的秒数。此时间称为UNIX纪元,自此以后经过的秒数称为时间戳。
    <html>
       
       <head>
          <title>E_NOTICE</title>
       </head>
       
       <body>
          
          <?php
              print time();
              
          ?>
          
       </body>
    </html>
    
    尝试一下
    这将产生以下结果:
    1566785104
    
    这是很难理解的。但PHP提供了优秀的工具,可以将时间戳转换为人们熟悉的形式。
  • 使用getdate()转换时间戳

    函数getdate()可选地接受时间戳并返回包含有关日期信息的关联数组。如果省略时间戳,它将使用time()返回的当前时间戳。下表列出了getdate()返回的数组中包含的元素。
    数组key 描述 例如
    seconds 过了多少秒(0-59) 20秒
    minutes 过了多少分钟(0-59) 29
    hours 一天中的小时数(0-23) 22
    mday 每月的某一天(1-31) 5
    weekday 星期几(0-6) 4
    mon 一年中的一个月(1-12) 7
    year 年(4位数) 2019
    yday 一年中的某一天(0-365) 19
    weekday 星期几 Thursday
    month 月份 January
    0 时间戳 1566785104
    现在您可以完全控制日期和时间。你可以用你想要的任何格式格式化这个日期和时间。
    试试下面的例子
    <?php
       $date_array = getdate();
       
       foreach ( $date_array as $key => $val ){
          print "$key = $val<br />";
       }
            
       $formated_date  = "今日的日期是: ";
       $formated_date .= $date_array['year']."-";
       $formated_date .= $date_array['mon'] . "-";
       $formated_date .= $date_array['mday'];
      
       
       
       print $formated_date;
    ?>
    
    尝试一下
  • 使用date()转换时间戳

    date()函数返回表示日期的格式化字符串。您可以对date()返回的格式进行很多控制,使用时候必须传递给它的字符串参数。
    date(format,[timestamp])
    
    提示:format是必需要的参数,timestamp是可选的。不传的话,默认使用time()函数返回的值。
    下表列出了格式字符串可以包含的代码
    格式字符 描述 例如
    d 月份中的第几天,有前导零的 2 位数字 01 到 31
    D 星期中的第几天,文本表示,3 个字母 Mon 到 Sun
    j 月份中的第几天,没有前导零 1 到 31
    l 星期几,完整的文本格式 Sunday 到 Saturday
    N ISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加) 1(表示星期一)到 7(表示星期天)
    S 每月天数后面的英文后缀,2 个字符 st,nd,rd 或者 th。可以和 j 一起用
    w 星期中的第几天,数字表示 0(表示星期天)到 6(表示星期六)
    z 年份中的第几天 0 到 365
    W ISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的) 例如:42(当年的第 42 周)
    F 月份,完整的文本格式, 例如 January 或者 March January 到 December
    m 数字表示的月份,有前导零 01 到 12
    M 三个字母缩写表示的月份 Jan 到 Dec
    n 数字表示的月份,没有前导零 1 到 12
    t 指定的月份有几天 28 到 31
    L 是否为闰年 如果是闰年为 1,否则为 0
    o ISO-8601 格式年份数字。这和 Y 的值相同,只除了如果 ISO 的星期数(W)属于前一年或下一年,则用那一年。(PHP 5.1.0 新加) 例如: 1999 或 2003
    Y 4 位数字完整表示的年份 例如:1999 或 2003
    y 2 位数字表示的年份 例如:99 或 03
    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
    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
    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)开始至今的秒数 1566785104
    试试下面的例子
    <?php
       print date("Y-m-d H:i:s<br>", time());
       print "今天是: ";
       print date("Y年的n月j日, h:i:s .a ", time());
    ?>
    
    尝试一下