date_parse_from_format()

1. 定义

该函数将一个时间日期字符串格式化后获取其详细信息。 返回一个带有时间日期详细信息的关联数组。

2. 语法

date_parse_from_format ( string $format , string $date ) : array

3. 参数说明

参数 可选性 数据类型 描述
$format 必需 字符串 符合规范的解析日期/时间的格式化字符串
$date 必需 字符串 strtotime()函数可接受的格式的日期

其中,$format参数有以下几种符号格式规则(注意,下面的结果有些与当前时间有关!):

符号 说明 示例
Y 四位数字的年份表示 2019年使用Y年,可得出:2019
y 两位数字的年份表示 77年使用y年,可得出:1977
FM 全写或简写的英文月份表示 August月使用F月,可得出:2019-08-19aug月使用M月,可得出:2019-08-19
mn 有前导零或无前导零的数字月份表示 09月使用m月,可得出:2019-09-199月使用n月,可得出:2019-09-19
z 一年中的第几天,从0开始 364使用z,可得出:2019-12-31
dj 有前导零或无前导零的一个月中的第几天表示 2019-08-01使用Y-m-d,可得出:2019-08-01
S 使用两个字母的缩写表示一个月的第几天,会自动忽略日期后面的stndrdth 2019-08-15th使用Y-m-dS,可得出:2019-08-15
Dl 全写或简写的星期表示 Monday使用D,可得出:2019-08-19
Aa 表示一天中的上午或下午 4am使用Ha,可得出:04:00:00.0000004pm使用Ha,可得出:16:00:00.000000
gh 有前导零或无前导零的12小时制的小时 6使用h,可得出:06:00:00.000000
GH 有前导零或无前导零的24小时制的小时 6使用H,可得出:06:00:00.000000
i 有前导零的分钟表示 6:32使用H:i,可得出:06:32:00.000000
s 有前导零的秒数表示 6:32:59使用H:i:s,可得出:06:32:59.000000
u 微秒表示,至多精确到六位数 6:32:59.123456使用H:i:s.u,可得出:06:32:59.123456
eOPT 时区名称,或者是以UTC时区为基准的小时偏移量,或者是以UTC为基准的小时和分钟的偏移量,小时和分钟之间用冒号(:)分隔 +2:00使用P,可得出timezone+02:00
空格 表示要格式化的时间字符串中的空格 2019 08 19使用Y m d可得出:2019-08-19
# 表示这几个分隔符中的一个:;.:/,-() 2019-08-19可使用Y#m#d,得出:2019-08-19
;.:/,-() 表示各自的含义 2019-08-19可使用Y-m-d,得出:2019-08-19
? 表示任一一个单字节字符 2019/08/19可使用Y?m?d,得出:2019-08-19(含有多个字节的字符时,使用*
* 表示任何的字符,直到遇到下一个有效的分隔符号或数值 2019年08月19日可使用Y*m*d*,得出:2019-08-19
! 将符号左侧的所有字段(年、月、日、时、分、秒、微秒以及时区)重置到 Unix Epoch 时间 2019年08月19日使用Y*m*d*!,可看到结果:1970-01-01
| 将尚未被解析的字段,也即格式字符串中未明确指定的字段 (年、月、日、时、分、秒、微秒以及时区) 重置到 Unix Epoch 时间 2019年08月19日使用Y*m*d*|,可看到结果中的时分秒被重置为0
+ 在格式字符串中使用这个格式表示字符, 并且所提供的日期时间字符串中包含除了格式字符之外的其他数据的话,不会发出一个错误,而是发出一个警告 2019-08-19使用Y-+m-+d,可看到结果:2019-08-19

4. 示例

<?php

// date_parse_from_format()
// 将一个时间日期字符串格式化后获取其详细信息

$date = 'Jan 10, 2019 08:31:00 pm';
$format = 'M d, Y H:i:s a';
$res = date_parse_from_format($format, $date);
var_dump($res);
/* 输出:
array(12) {
    ["year"]=>int(2019)
    ["month"]=>int(1)
    ["day"]=>int(10)
    ["hour"]=>int(20)
    ["minute"]=>int(31)
    ["second"]=>int(0)
    ["fraction"]=>float(0)
    ["warning_count"]=>int(0)
    ["warnings"]=>array(0) {}
    ["error_count"]=>int(0)
    ["errors"]=>array(0) {}
    ["is_localtime"]=>bool(false)
  }
*/
echo "解析结果:{$res['year']}年{$res['month']}月{$res['day']}日 {$res['hour']}:{$res['minute']}:{$res['second']}";// 输出:解析结果:2019年1月10日 20:31:0

5. 延展阅读