string date ( string format [, int timestamp])
不管Unix时间戳在编程时使用起来如何方便,它对最终用户来说都是不友好的,毕竟没有人会用秒数来表示时间。
人们都喜欢用各种格式化之后的日期格式来表示时间,因此,我们可以通过date()
函数来讲时间戳转换为我们想要的格式。
date()
函数有两个参数:第一个是参数包含你想要转换成某种格式的字符串,第二个参数是你想要转换的时间戳。如果你不提供第二个参数的话,PHP假定你想使用当前时间。
date()
的第一个参数很关键,是由一系列预定义的选项组成的字符串。你可以在字符串中庸其他字符,这些字符将被直接复制到格式化的日期中。如果你用到某个预定义的字符而不需要其作为日期选项时,你需要用\
将其进行转义。如果你要用的转义字符已经存在一个转义序列当中,你需要将其再次转义。听起来可能很别扭,别担心,我们稍后讲几个例子。
下面是全部的日期格式字符串,注意他们是大小写敏感的。
格式化字符 | 描述 | 例子 |
---|---|---|
a | 小写的 am/pm | am 或 pm |
A | 大写的 am/pm | AM 或 PM |
B | Swatch Internet Time | 000 到 999 |
c | ISO 8601 日期, 时间, and 时区 | 2004-06-18T09:26:55+01:00 |
d | 0开头的两位的月份 | 01 to 31 |
D | 三个字母的星期字符串 | Mon, Thu, Sat |
F | 英文月份 | January, August |
g | 12小时制,不补零 | 1 to 12 |
G | 24小时制,不补零 | 0 to 23 |
h | 12小时制,补零 | 01 to 12 |
H | 24小时制,补零 | 00 to 23 |
i | 补零的分钟数 | 00 to 59 |
I | 是否采用夏时制? | 1 if yes, 0 if no |
j | 不补零的日期 | 1 to 31 |
l | 星期几全拼 | Monday, Saturday |
L | 是闰年吗? | 1 if yes, 0 if no |
m | 补零的月份 | 01 to 12 |
M | 短字符串型月份 | Jan, Aug |
n | 不补零的月份 | 1 to 12 |
O | 与GMT的时间差 | 200 |
r | RFC-822 格式的日期 | Sat, 22 Dec 1979 17:30 +0000 |
s | 补零的秒数 | 00 to 59 |
S | 英文序数词后缀 | st, nd, rd, or th |
t | 月份中的日期 | 28 to 31 |
T | 服务器时区 | GMT, CET, EST |
U | Unix 时间戳 | 1056150334 |
w | 周几的数字格式 | 0 (Sunday), 6 (Saturday) |
W | ISO-8601 阴暗中的第几周 | 30 (30th week of the year) |
y | 两位数表示的年份 | 97, 02 |
Y | 四位数表示的年份 | 1997, 2002 |
z | 一年中的第几天 | 0 to 366 |
Z | 以秒计数的时间偏移 | -43200 to 43200 |
从上表中可以看出,从时间戳转换为日期有太多选择。下面是一个使用格式化字符的例子:
<?php
print date("H:i") . "\n";
print "The day yesterday was " . date("l", time() - 86400) . "\n";
print "The year is " . date("Y") . "\n";
print date("jS of F Y") . "\n";
print "My birthday is on a " . date("l", strtotime("22 Dec 2004")) . " this year.\n";
print date("\M\y b\i\\r\\t\h\d\a\y \i\s o\\n \a l \\t\h\i\s \ye\a\\r. ", strtotime("22 Dec 2004")) . "\n";
?>
22nd of October 2003
格式的日期。注意其中的of
这个单词,直接按照输入的样子被输出出来,没有经过任何转换。这是因为小写的o
和小写的f
没有对应的日期格式(将来可能出现),所以直接按照原样输出了。\\
而不是\
的原因了。两个\
,一个用来阻止PHP将其替换为日期格式,另一个用来阻止PHP将其作为转义符输出。利用日期函数可以做很多事,所以我强烈推荐你尝试一下不同的格式,看看你能形成怎样不同的组合。