(PHP 5 >= 5.3.0, PHP 7, PHP 8)
date_parse_from_format — 根据指定的格式获取给定日期的详细信息
format
有关 format
使用方式的文档,请参阅 DateTimeImmutable::createFromFormat() 的文档。相同的规则适用。
datetime
表示日期/时间的字符串。
返回包含给定日期/时间的详细信息的关联数组。
返回的数组包含 year
、month
、day
、hour
、minute
、second
、fraction
和 is_localtime
的键。
如果存在 is_localtime
,则 zone_type
指示时区的类型。对于类型 1
(UTC 偏移量),将添加 zone
、is_dst
字段;对于类型 2
(缩写),将添加 tz_abbr
、is_dst
字段;对于类型 3
(时区标识符),将添加 tz_abbr
、tz_id
字段。
该数组包含 warning_count
和 warnings
字段。第一个指示有多少个警告。元素 warnings
数组的键指示给定 datetime
中发生警告的位置,字符串值描述警告本身。以下示例显示了这样的警告。
该数组还包含 error_count
和 errors
字段。第一个指示发现了多少个错误。元素 errors
数组的键指示给定 datetime
中发生错误的位置,字符串值描述错误本身。以下示例显示了这样的错误。
如果警告或错误发生在相同位置,则 warnings
和 errors
数组中的数组元素数量可能少于 warning_count
或 error_count
。
当 datetime
包含 NULL 字节时,此函数会抛出 ValueError。
版本 | 描述 |
---|---|
8.0.21, 8.1.8, 8.2.0 | 现在当 datetime 中传递 NULL 字节时会抛出 ValueError,之前是静默忽略的。 |
7.2.0 | 返回数组的 zone 元素现在表示秒而不是分钟,并且其符号反转。例如,-120 现在是 7200 。 |
示例 #1 date_parse_from_format() 示例
<?php
$date = "6.1.2009 13:00+01:00";
print_r(date_parse_from_format("j.n.Y H:iP", $date));
?>
上面的示例将输出
Array ( [year] => 2009 [month] => 1 [day] => 6 [hour] => 13 [minute] => 0 [second] => 0 [fraction] => [warning_count] => 0 [warnings] => Array ( ) [error_count] => 0 [errors] => Array ( ) [is_localtime] => 1 [zone_type] => 1 [zone] => 3600 [is_dst] => )
示例 #2 date_parse_from_format() 带有警告的示例
<?php
$date = "26 August 2022 22:30 pm";
$parsed = date_parse_from_format("j F Y G:i a", $date);
echo "Warnings count: ", $parsed['warning_count'], "\n";
foreach ($parsed['warnings'] as $position => $message) {
echo "\tOn position {$position}: {$message}\n";
}
?>
上面的示例将输出
Warnings count: 1 On position 23: The parsed time was invalid
示例 #3 date_parse_from_format() 带有错误的示例
<?php
$date = "26 August 2022 CEST";
$parsed = date_parse_from_format("j F Y H:i", $date);
echo "Errors count: ", $parsed['error_count'], "\n";
foreach ($parsed['errors'] as $position => $message) {
echo "\tOn position {$position}: {$message}\n";
}
?>
上面的示例将输出
Errors count: 3 On position 15: A two digit hour could not be found On position 19: Data missing