date_parse_from_format

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

date_parse_from_format根据指定的格式获取给定日期的详细信息

描述

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

返回包含给定日期/时间的详细信息的关联数组。

参数

format

有关 format 使用方式的文档,请参阅 DateTimeImmutable::createFromFormat() 的文档。相同的规则适用。

datetime

表示日期/时间的字符串。

返回值

返回包含给定日期/时间的详细信息的关联数组。

返回的数组包含 yearmonthdayhourminutesecondfractionis_localtime 的键。

如果存在 is_localtime,则 zone_type 指示时区的类型。对于类型 1(UTC 偏移量),将添加 zoneis_dst 字段;对于类型 2(缩写),将添加 tz_abbris_dst 字段;对于类型 3(时区标识符),将添加 tz_abbrtz_id 字段。

该数组包含 warning_countwarnings 字段。第一个指示有多少个警告。元素 warnings 数组的键指示给定 datetime 中发生警告的位置,字符串值描述警告本身。以下示例显示了这样的警告。

该数组还包含 error_counterrors 字段。第一个指示发现了多少个错误。元素 errors 数组的键指示给定 datetime 中发生错误的位置,字符串值描述错误本身。以下示例显示了这样的错误。

警告

如果警告或错误发生在相同位置,则 warningserrors 数组中的数组元素数量可能少于 warning_counterror_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

参见

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top