在线文档教程
PHP
日期和时间 | Date and Time

date

date

(PHP 4, PHP 5, PHP 7)

日期 - 格式化本地时间/日期

描述

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

timestamp如果未给出时间戳,则返回按照给定格式字符串使用给定整数或当前时间格式化的字符串。换句话说,timestamp是可选的,并且默认为time()的值。

参数

format

输出日期字符串的格式。请参阅下面的格式选项。也可以使用几个预定义的日期常量,例如DATE_RSS包含格式字符串'D,d MYH:i:s'

格式字符描述示例返回的值
Day
d每月的一天,2位数字前导零01至31
D 一天三个字母的文字表示周一至周日
j 没有前导零的月份的一天1至31
l(小写'L')星期几的完整文本表示周日到周六
N 星期几的ISO-8601数字表示(在PHP 5.1.0中添加)1(星期一)至7(星期日)
S 本月的英文序号后缀,2个字符st,nd,rd或th。适用于j
w 星期几的数字表示0(星期日)到6(星期六)
z 一年中的某一天(从0开始)0到365
Week
W ISO-8601周数,周一从周一开始例如:42(一年中的第42周)
Month
F一个月的全文表示,例如1月或3月1月至12月
m 一个月的数字表示,前导零01至12
M 一个月的简短文字表示,三个字母1月至12月
n一个月的数字表示,没有前导零1至12
t给定月份的天数28至31
Year
L 无论是闰年如果是闰年则为1,否则为0。
o ISO-8601星期编号年。这与Y的值相同,只是如果ISO周数(W)属于上一年或下一年,则使用该年。(在PHP 5.1.0中添加)例如:1999年或2003年
Y 一年的完整数字表示,4位数字例如:1999年或2003年
y 一年的两位数表示例如:99或03
Time
a 中午和下午小写之前上午或下午
A 中午和下午大写之前上午或下午
B斯沃琪互联网时间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,因为它需要一个整数参数,而DateTime :: format()确实支持微秒,如果DateTime是以微秒创建的。例如:654321
v毫秒(在PHP 7.0.0中添加)。同样的说明适用于你。例如:654
Timezone
e时区标识符(在PHP 5.1.0中添加)例如:UTC,GMT,大西洋/亚速尔群岛
I (大写 i) 日期是否在夏令时如果是夏令时,则为1,否则为0。
O格林威治时间(GMT)与小时之差例如:+0200
P格林威治时间(格林尼治标准时间)与小时和分钟之间冒号的区别(在PHP 5.1.3中添加)例如:+02:00
T时区缩写例如:EST,MDT ...
Z以秒为单位的时区偏移量。UTC以西时区的偏移总是负值,而UTC以东的偏移总是正值。-43200至50400
Full Date/Time
c ISO 8601日期(在PHP 5中添加)2004-02-12T15:19:21 + 00:00
r»RFC 2822格式化日期例如:2000年12月21日星期四16:01:07 +0200
U自Unix时代开始秒(1970年1月1日00:00:00 GMT)另见time()

格式字符串中无法识别的字符将按原样打印。使用gmdate()时,Z格式将始终返回0

注意:由于此函数只接受整数时间戳,因此只有在使用date_format()函数和使用date_create()创建的基于用户的时间戳时,u格式字符才有用。

timestamp

可选timestamp参数是一个整数Unix时间戳,默认为当前本地时间,如果timestamp没有给出。换句话说,它默认为time()的值。

返回值

返回格式化的日期字符串。如果使用非数字值timestampFALSE则返回并发出E_WARNING级别错误。

错误/异常

如果使用系统设置或TZ环境变量E_NOTICE,则每次调用日期/时间函数都会生成一个如果时区无效的信息和/或a E_STRICTE_WARNINGmessage。另请参阅date_default_timezone_set()

更新日志

描述
5.1.0时间戳的有效范围通常是从1905年12月13日20:45:54 GMT到2038年1月19日星期二03:14:07 GMT的周五。(这些是与32位有符号整数的最小值和最大值对应的日期)。然而,在PHP 5.1.0之前,在一些系统(例如Windows)上,这个范围从01-01-1970到19-01-2038是有限的。
5.1.0现在发出E_STRICT和E_NOTICE时区错误。
5.1.1标准日期/时间格式有一些有用的常量可用于指定格式参数。

例子

示例 #1 date() examples

<?php // set the default timezone to use. Available since PHP 5.1 date_default_timezone_set('UTC' // Prints something like: Monday echo date("l" // Prints something like: Monday 8th of August 2005 03:12:46 PM echo date('l jS \of F Y h:i:s A' // Prints: July 1, 2000 is on a Saturday echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000) /* use the constants in the format parameter */ // prints something like: Wed, 25 Sep 2013 15:28:57 -0700 echo date(DATE_RFC2822 // prints something like: 2000-07-01T00:00:00+00:00 echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000) ?>

您可以防止格式字符串中的识别字符通过使用前一个反斜杠进行转义而被扩展。如果带有反斜杠的字符已经是特殊的序列,则可能还需要转义反斜杠。

示例 #2 Escaping characters in date()

<?php // prints something like: Wednesday the 15th echo date('l \t\h\e jS' ?>

可以使用date()和mktime()一起查找未来或过去的日期。

示例 #3 date() and mktime() example

<?php $tomorrow  = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y") $lastmonth = mktime(0, 0, 0, date("m")-1, date("d"),   date("Y") $nextyear  = mktime(0, 0, 0, date("m"),   date("d"),   date("Y")+1 ?>

注意:由于夏令时时间的原因,这比简单地将日期或月份中的秒数加上或减去时间戳的秒数更可靠。

date()格式的一些例子。请注意,您应该转义任何其他字符,因为任何当前具有特殊含义的字符都会产生不良结果,并且在将来的PHP版本中可能会分配其他字符。转义时,一定要使用单引号来防止像\ n这样的字符变成换行符。

示例#4 date()格式化

<?php // Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the // Mountain Standard Time (MST) Time Zone $today = date("F j, Y, g:i a"                 // March 10, 2001, 5:16 pm $today = date("m.d.y"                         // 03.10.01 $today = date("j, n, Y"                       // 10, 3, 2001 $today = date("Ymd"                           // 20010310 $today = date('h-i-s, j-m-y, it is w Day'     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01 $today = date('\i\t \i\s \t\h\e jS \d\a\y.'   // it is the 10th day. $today = date("D M j G:i:s T Y"               // Sat Mar 10 17:16:18 MST 2001 $today = date('H:m:s \m \i\s\ \m\o\n\t\h'     // 17:03:18 m is month $today = date("H:i:s"                         // 17:16:18 $today = date("Y-m-d H:i:s"                   // 2001-03-10 17:16:18 (the MySQL DATETIME format) ?>

要以其他语言格式化日期,您应该使用setlocale()和strftime()函数来代替date()

笔记

注意:要从日期的字符串表示形式生成时间戳,您可以使用strtotime()。此外,有些数据库还具有将日期格式转换为时间戳的功能(例如MySQL的»UNIX_TIMESTAMP函数)。

注意

自PHP 5.1起,请求开始的时间戳在$ _SERVER ['REQUEST_TIME']中可用。