PHP date_parse() 函数

date_parse() 函数用于解析日期/时间字符串,返回一个包含日期信息的关联数组。

语法

date_parse(string $datetime): array

参数

参数 类型 描述
$datetime string 必需。日期/时间字符串,如 "2023-12-25 14:30:45"

返回值

返回一个关联数组,包含以下键:

键名 类型 描述
year int 年份
month int 月份 (1-12)
day int 日 (1-31)
hour int 小时 (0-23)
minute int 分钟 (0-59)
second int 秒 (0-59)
fraction float 微秒部分
warning_count int 警告数量
warnings array 警告信息数组
error_count int 错误数量
errors array 错误信息数组
is_localtime bool 是否包含本地时间信息

示例

示例 1:基本用法

<?php
$date = "2023-12-25 14:30:45";
$result = date_parse($date);
print_r($result);
?>
                            

输出:


Array
(
    [year] => 2023
    [month] => 12
    [day] => 25
    [hour] => 14
    [minute] => 30
    [second] => 45
    [fraction] => 0
    [warning_count] => 0
    [warnings] => Array()
    [error_count] => 0
    [errors] => Array()
    [is_localtime] =>
)
                            
示例 2:处理无效日期

<?php
$date = "2023-02-30 25:61:61"; // 无效的日期时间
$result = date_parse($date);
print_r($result);
?>
                            

输出:


Array
(
    [year] => 2023
    [month] => 2
    [day] => 30
    [hour] => 25
    [minute] => 61
    [second] => 61
    [fraction] => 0
    [warning_count] => 5
    [warnings] => Array
        (
            [4] => Unexpected character
            [9] => Unexpected character
            [10] => The parsed date was invalid
            [12] => The parsed date was invalid
            [14] => The parsed date was invalid
        )
    [error_count] => 0
    [errors] => Array()
    [is_localtime] =>
)
                            
示例 3:实际应用 - 验证日期

<?php
function validateDate($date) {
    $parsed = date_parse($date);

    if ($parsed['error_count'] > 0 || $parsed['warning_count'] > 0) {
        return false;
    }

    // 检查日期是否有效
    return checkdate($parsed['month'], $parsed['day'], $parsed['year']);
}

$dates = [
    "2023-12-25",
    "2023-02-30",
    "2023-13-01",
    "invalid-date"
];

foreach ($dates as $date) {
    echo "'$date' is " . (validateDate($date) ? 'valid' : 'invalid') . ".
"; } ?>

输出:


'2023-12-25' is valid.
'2023-02-30' is invalid.
'2023-13-01' is invalid.
'invalid-date' is invalid.
                            

注意事项

  • 时区信息:date_parse() 不解析时区信息,如果需要时区解析,请使用 date_parse_from_format()
  • 格式验证:函数会尝试解析各种格式的日期,但不会验证日期的逻辑正确性(如2月30日)
  • 性能:对于简单的日期验证,checkdate() 函数可能更高效
  • 微秒:如果日期字符串包含微秒,会在 fraction 键中返回

相关函数

date_parse_from_format()

根据指定格式解析日期

checkdate()

验证格利高里日期

strtotime()

将英文文本日期时间解析为Unix时间戳