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()的值。
返回值
返回格式化的日期字符串。如果使用非数字值timestamp
,FALSE
则返回并发出E_WARNING
级别错误。
错误/异常
如果使用系统设置或TZ环境变量E_NOTICE
,则每次调用日期/时间函数都会生成一个如果时区无效的信息和/或a E_STRICT
或E_WARNING
message。另请参阅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']中可用。