PHP 日期和时间

PHP date() 函数用于对日期或时间进行格式化

 时间戳(timestamp),通常是一个字符序列,唯一地标识某一刻的时间

格式化日期:date()函数将返回参数timestamp按照指定格式而产生的字符串。

语法

date(format, timestamp)

       参数     描述
    format必需,规定时间戳的格式。

    timestamp

可选,规定时间戳。默认是当前时间和日期

时间戳是一种字符序列,它表示具体事件发生的时间和日期


格式字串可以识别以下 format 参数的字符串

    format 字符    说明    返回值例子
  日------
  d月份中的第几天,有前导零的 2 位数字01 到 31
  D星期中的第几天,文本表示,3 个字母Mon 到 Sun
  j月份中的第几天,没有前导零1 到 31
  l("L"的小写字母)星期几,完整的文本格式Sunday 到 Saturday
  NISO-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 或者 MarchJanuary 到 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 新加)


Examples: 1999 or 2003

  Y4 位数字完整表示的年份例如:1999 或 2003
  y2 位数字表示的年份例如:99 或 03
  时间------
  a小写的上午和下午值am 或 pm
  A大写的上午和下午值AM 或 PM
  BSwatch 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

  完整的日期/时间------
  cISO 8601 格式的日期(PHP 5 新加)2004-02-12T15:19:21+00:00
  rRFC 822 格式的日期例如:Thu, 21 Dec 2000 16:01:07 +0200


  U

从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数


参见 time()

PHP date() 格式化日期

date() 函数的第一个必需参数 format 规定了如何格式化日期/时间。

这里列出了一些可用的字符:

d - 代表月中的天 (01 - 31)

m - 代表月 (01 - 12)

Y - 代表年 (四位数)

如需了解 format 参数中可用的所有字符列表,请查阅我们的 PHP Date 参考手册,date() 函数。

可以在字母之间插入其他字符,比如 "/"、"." 或者 "-",这样就可以增加附加格式了:

实例

<?php
echo date("Y/m/d") . "<br>";
echo date("Y.m.d") . "<br>";
echo date("Y-m-d");
?>

程序运行结果:

2016/10/09
2016.10.09
2016-10-09


下面是常用于时间的字符:

·   h - 带有首位零的 12 小时小时格式

·   i - 带有首位零的分钟

·   s - 带有首位零的秒(00 -59)

·   a - 小写的午前和午后(am 或 pm)


实例

下面的例子以指定的格式输出当前时间:

<?php
echo date ("H:i:sa");
?>

程序运行结果:

15:53:06pm

PHP date()函数会返回服务器当前的时间/日期


获得时区

如果从代码返回的不是正确的时间,有可能是因为您的服务器位于其他国家或者被设置为不同时区。

因此,如果您需要基于具体位置的准确时间,您可以设置要用的时区。

下面的例子把时区设置为 "Asia/Shanghai",然后以指定格式输出当前时间:

<?php
header("Content-type:text/html;charset=utf-8");    //设置编码
date_default_timezone_set("Asia/Shanghai");
echo "当前时间是 " . date("h:i:sa");

?>

程序运行结果:

当前时间是 03:54:49pm


通过 PHP mktime() 创建日期

date() 函数中可选的时间戳参数规定时间戳。如果您未规定时间戳,将使用当前日期和时间(正如上例中那样)。

mktime() 函数返回日期的 Unix 时间戳。Unix 时间戳包含 Unix 纪元(1970 年 1 月 1 日 00:00:00 GMT)与指定时间之间的秒数。

语法

mktime(hour,minute,second,month,day,year)

下面的例子将使用mktime()函数中一系列的参数来创建日期和时间

<?php
header("Content-type:text/html;charset=utf-8");    //设置编码
$d=mktime(9, 12, 31, 6, 10, 2016);
echo "创建日期是 " . date("Y-m-d h:i:sa", $d);
?>

程序运行结果:

创建日期是 2016-06-10 09:12:31am


通过 PHP strtotime() 用字符串来创建日期

PHP strtotime() 函数用于把人类可读的字符串转换为 Unix 时间。

语法

strtotime(time,now)

 下面的例子通过 strtotime() 函数创建日期和时间:

<?php
header("Content-type:text/html;charset=utf-8");    //设置编码
$d=strtotime("10:38pm April 15 2016");
echo "创建日期是 " . date("Y-m-d h:i:sa", $d);
?>

程序运行结果:

创建日期是 2016-04-15 10:38:00pm


PHP 在将字符串转换为日期这方面非常聪明,所以您能够使用各种值:

实例

<?php
$d=strtotime("tomorrow");
echo date("Y-m-d h:i:sa", $d) . "<br>";
$d=strtotime("next Saturday");
echo date("Y-m-d h:i:sa", $d) . "<br>";
$d=strtotime("+3 Months");
echo date("Y-m-d h:i:sa", $d) . "<br>";
?>

程序运行结果:

2016-10-10 12:00:00am
2016-10-15 12:00:00am
2017-01-09 04:01:09pm

:strtotime() 并不完美,所以请记得检查放入其中的字符串。


实例

<?php
$startdate = strtotime("Saturday");
$enddate = strtotime("+5 weeks",$startdate);
while ($startdate < $enddate) {
    echo date("M d", $startdate),"<br>";
    $startdate = strtotime("+1 week", $startdate);
}
?>

程序运行结果:

Oct 15
Oct 22
Oct 29
Nov 05
Nov 12


实例

用strtotime()函数获取英文格式日期时间字符串的时间戳

<?php
header("Content-type:text/html;charset=utf-8");    //设置编码
echo strtotime("now"),"<br>";           //当前时间的时间戳
echo "输出时间:".date("Y-m-d H:i:s",strtotime("now")),"<br>";  //输出当前时间
echo strtotime("24 May 2016"),"<br>";                     //输出指点时间的时间戳
echo "输出时间:".date("Y-m-d H:i:s",strtotime("24 May 2016")),"<br>";     //输入指定的日期
?>

程序运行结果:

1476000300
输出时间:2016-10-09 16:05:00
1464019200
输出时间:2016-05-24 00:00:00


实例

实现倒计时的功能

<?php
header("Content-type:text/html;charset=utf-8");    //设置编码
$time=strtotime(date("Y-m-d H:i:s"));     //当前的系统时间
$time1=strtotime("2017-10-1  12:00:00");  //国庆节的放假时间
$time2=strtotime("2017-1-1");             //元旦的放假时间
$sub=ceil(($time1-$time)/3600);           //(60秒*60分)/小时
$sub1=ceil(($time2-$time1)/86400);        //(60秒*60分*24小时)/天
echo "离国庆放假时间还有 <strong>$sub</strong> 小时";
echo "<p>";
echo"离元旦放假时间还有 <strong>$sub1</strong> 天";
?>

程序运行结果:

离国庆放假时间还有 8564 小时

离元旦放假时间还有 -273 天


完整的 PHP Date 参考手册

如需查看所有日期函数的完整参考手册,请访问我们的 完整的 PHP Date 参考手册。

该参考手册提供了每个函数的简要描述和应用实例


继续学习
||
<?php echo date ("H:i:sa"); ?>
提交重置代码