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 | 是否包含本地时间信息 |
<?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] =>
)
<?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] =>
)
<?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_from_format()checkdate() 函数可能更高效fraction 键中返回date_parse_from_format()根据指定格式解析日期
checkdate()验证格利高里日期
strtotime()将英文文本日期时间解析为Unix时间戳