gpt4 book ai didi

php - 如何使用 DateTime 类将 '02/31/2010' 捕获为无效日期?

转载 作者:可可西里 更新时间:2023-11-01 00:18:09 25 4
gpt4 key购买 nike

我一直在 PHP 中使用 DateTime 类,因为 date() 具有 Unix 时间戳的缺点。但是,这两种方法都不会检测没有 31 天的月份的无效日期,但会尝试使用第 31 天。

示例代码:

try {
$date = new DateTime('02/31/2018');
$formattedDate = $date->format('Y-m-d');
}
catch (Exception $e) {
}
echo $formattedDate;

示例输出:

2018-03-03

更新 1:

要使用 checkdate(),我需要日期的组成部分。为此,我需要使用日期字符串作为构造函数来实例化一个 DateTime 对象。在“02/31/2018”的情况下,它会在实例化时将其转换为“03/03/2018”。到那时,通过 checkdate() 运行组件月、日、年为时已晚。解决方案是什么?

更新 2:

如果我强制使用特定格式(例如 mm/dd/yyyy),获取日期的组成部分很容易,但是如果我接受 strtotime() 接受的所有格式,我就无法在通过 strtotime( ) -> date() 或 DateTime::__construct -> DateTime::format()。

我一直在 PHP 中使用 DateTime 类,因为 date() 具有 Unix 时间戳的缺点。但是,这两种方法都不会检测没有 31 天的月份的无效日期,但会尝试使用第 31 天。

示例代码:

try {
$date = new DateTime('02/31/2018');
$formattedDate = $date->format('Y-m-d');
}
catch (Exception $e) {
}
echo $formattedDate;

示例输出:

2018-03-03

更新 1:

要使用 checkdate(),我需要日期的组成部分。为此,我需要使用日期字符串作为构造函数来实例化一个 DateTime 对象。在“02/31/2018”的情况下,它会在实例化时将其转换为“03/03/2018”。到那时,通过 checkdate() 运行组件月、日、年为时已晚。解决方案是什么?

更新 2:

如果我强制使用特定格式(例如 mm/dd/yyyy),获取日期的组成部分很容易,但是如果我接受 strtotime() 接受的所有格式,我就无法在通过 strtotime( ) -> date() 或 DateTime::__construct -> DateTime::format()。

最佳答案

试试 checkdate功能。

Checks the validity of the date formed by the arguments. A date is considered valid if each parameter is properly defined.

Parameters

month

The month is between 1 and 12 inclusive.

day

The day is within the allowed number of days for the given month . Leap years are taken into consideration.

year

The year is between 1 and 32767 inclusive.

关于php - 如何使用 DateTime 类将 '02/31/2010' 捕获为无效日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/997474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com