strptime()函数解析由 strftime() 生成的日期/时间
strptime()函数接受日期字符串(与生成的strftime() )和格式字符串作为参数,并解析以指定的格式给定的字符串。
strptime($date, $format)
序号 | 参数及说明 |
---|---|
1 | date(必需) 这是一个字符串值,表示要分析的日期。 |
2 | format(必需) 这是一个字符串值,表示用于解析日期的格式。 |
PHP strptime()函数返回一个包含已分析日期的数组(将 date 解析后的数组)。如果失败,此函数将返回布尔值false。返回的数组包含以下键和减号
tm_min - 当前小时内的分钟数(0-59)
tm_hour - 午夜起的小时数(0-23)
tm_mday - 月份中的第几天(1-31)
tm_mon - 自一月起过了几个月(0-11)
tm_year - 自 1900 年起过了几年
tm_wday - 自星期天起过了几天(0-6)
tm_yday - 本年自一月一日起过了多少天(0-365)
unparsed - date 中未能通过指定的 format 识别的部分
此函数最初是在PHP版本5.1.0中引入的,并且可以在所有更高版本中使用。
以下示例演示了strptime()函数的用法-
<?php $format = '%A %d %B %G %T'; $strf = strftime($format); $res = strptime($strf, $format); print_r($res); ?>测试看看‹/›
输出结果
Array ( [tm_sec] => 26 [tm_min] => 35 [tm_hour] => 15 [tm_mday] => 13 [tm_mon] => 4 [tm_year] => 0 [tm_wday] => 3 [tm_yday] => 132 [unparsed] => )
<?php $format = '%d/%m/%Y %H:%M:%S'; $strf = strftime($format); echo "$strf\n"; print_r(strptime($strf, $format)); ?>测试看看‹/›
输出结果
08/06/2020 09:10:32 Array ( [tm_sec] => 32 [tm_min] => 10 [tm_hour] => 9 [tm_mday] => 8 [tm_mon] => 5 [tm_year] => 120 [tm_wday] => 1 [tm_yday] => 159 [unparsed] => )
以下是使用strftime格式化日期/时间的各种字符-
%a - 星期几名称的简写
%A - 星期几名称的全称
%b - 月份名称的简写
%B - 月份名称的全称
%c - 首选的日期和时间表示法
%C - 表示世纪的数字(年份除以 100,范围从 00 到 99)
%d - 一个月中的第几天(01 到 31)
%D - 时间格式,与 %m/%d/%y 表示法相同
%e - 一个月中的第几天(1 到 31)
%g - 与 %G 表示法类似,但不带世纪
%G - 与 ISO 星期数对应的 4 位数年份(见 %V)
%h - 与 %b 表示法相同
%H - 小时,使用 24 小时制(00 到 23)
%I - 小时,使用 12 小时制(01 到 12)
%j - 一年中的第几天(001 到 366)
%m - 月份(01 到 12)
%M - 分
%n - 换行符
%p - 与给定的时间值相对应的 am 或 pm
%r - a.m. 和 p.m. 的时间标记法
%R - 24 小时制的时间标记法
%S - 秒
%t - tab 制表符
%T - 当前时间,与 %H:%M:%S 表示法相同
%u - 星期几的数字表示(1 到 7),Monday[星期一] = 1。警告:在 Sun Solaris 系统中,Sunday[星期日] = 1
%U - 当年包含的周数,从第一个星期日开始,作为第一周的第一天
%V - 当年包含的 ISO 8601 格式下的周数(01 到 53),week 1 表示当年的第一周,至少要有四天,且以星期一作为周的第一天
%W - 当年包含的周数,从第一个星期一开始,作为第一周的第一天
%w - 以十进制数形式表示一周中的某天,Sunday[星期日] = 0
%x - 首选的日期表示法,不带时间
%X - 首选的时间表示法,不带日期
%y - 不包含表示世纪的数字的年份表示(范围从 00 到 99)
%Y - 包含表示世纪的数字的年份表示
%Z 或 %z - 时区名称或简写
%% - 输出一个 % 字符