日 | --- | --- |
d 和 j | 一个月中的第几天,2 位数字表示,有前导 0 或者无前导 0 | 01 到 31 或者 1 到 31 |
D 和 l | 星期几的文字表示 | Mon 到 Sun 或者 Sunday 到 Saturday |
S | 2 个字母表示的一个月中的第几天(序数词), 在进行解析的时候会被忽略 | st ,nd ,rd 或者 th 。 |
z | 一年中的第几天,从 0 开始 | 0 到 365 |
月 | --- | --- |
F 和 M | 文本表示的月份,例如 January 或者 Sept | January 到 December 或者 Jan 到 Dec |
m 和 n | 数值表示的月份,有前导 0 或者无前导 0 | 01 到 12 or 1 到 12 |
年 | --- | --- |
Y | 4 位数字表示的年 | 例如:1999 或 2003 |
y | 2 位数字表示的年, 可用的范围是 1970 至 2069(不含) | 例如: 99 或 03 (表示 1999 和 2003 ) |
时间 | --- | --- |
a 和 A | 上午、下午 | am 或 pm |
g and h | 12 小时制的小时,有前导 0 或者无前导 0 | 1 到 12 或者 01 到 12 |
G 和 H | 24 小时制的小时,有前导 0 或者无前导 0 | 0 到 23 或 00 到 23 |
i | 分钟,有前导 0 | 00 到 59 |
s | 秒,有前导 0 | 00 到 59 |
u | 微秒,最多到 6 位数字 | 示例:45 ,654321 |
时区 | --- | --- |
e ,O , P 和 T | 时区名称,或者是以 UTC 时区为基准的小时偏移量, 或者是以 UTC 为基准的小时和分钟的偏移量, 小时和分钟之间用冒号(:)分隔。 | 示例:UTC ,GMT , Atlantic/Azores 或 +0200 或 +02:00 或 EST ,MDT |
完整的日期和时间 | --- | --- |
U | 从 Unix Epoch (January 1 1970 00:00:00 GMT) 开始计算的时间,以秒为单位 | 示例:1292177455 |
空白字符和分隔字符 | --- | --- |
(空格) | 一个空格字符或者一个 tab 字符 | 示例:
|
# | 可以是一下分隔符号中的任意一个: ; , : ,/ ,. , , ,- ,( 或 ) | 示例:/ |
; , : ,/ ,. , , ,- ,( 或 ) | 特殊字符 | 示例:- |
? | 随机字节 | 示例:^ (需要注意的是, 对于 UTF-8 字符,可能会需要多个 ? 。 这种情况下,请使用 * ) |
* | 随机字节,直到遇到下一个有效的分隔符号或者数值 | 示例:使用 Y-*-d 格式用来解析 2009-aWord-08 字符串的时候, * 会匹配 aWord |
! | 将所有的字段(年、月、日、时、分、秒、微秒以及时区)重置到 Unix Epoch 时间。 | 如果不使用 !, 格式, 那么所有的字段会被设置为系统当前的日期和时间。 |
| | 将尚未被解析的字段,也即格式字符串中未明确指定的字段 (年、月、日、时、分、秒、微秒以及时区) 重置到 Unix Epoch 时间。 | Y-m-d| 会解析日期时间字符串中的年、月和日, 但是对于时、分、秒字段会设置为 0. |
+ | 在格式字符串中使用这个格式表示字符, 并且所提供的日期时间字符串中包含除了格式字符之外的其他数据的话,不会发出一个错误,而是发出一个警告。 | 使用 DateTime::getLastErrors() 方法 来检测所给定的日期时间字符串中是否包含格式字符串指定的内容之外的数据。 |