如何验证特定年份的2月天数?

时间:2018-10-11 18:25:04

标签: php date

如何验证特定日期?例如,用户类型为29-12-2005。当然,我可以使用正则表达式等进行验证。但是2005年2月还没有29天。任何日期函数和方法都对我没有帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用Last day of this month

例如

echo (new DateTime('1-12-2005'))->modify('Last day of this month')->format('d');

输出:

31

Sandbox

请注意,这是针对12月(12)。如果您将1-2-2005设置为28,则不必使用29,因为DateTime会将其推迟到下个月,这使我们进入了这个月。

只需检查日期(如果是有效日期,则应相同):

$date = '29-2-2005';

echo (new DateTime($date))->format('d-m-Y') == $date  ? 'true' : 'false';

输出:

false //ex. 1-3-2005 == 29-2-2005 is false

然后当然是这样:

$date = explode('-','29-2-2005');

var_dump(checkdate( $date[1], $date[0], $date[2] ));

false,但是checkdate的缺点是您需要提前知道日期的格式。使用DateTime,它将接受多种格式而不会出现问题。

答案 1 :(得分:0)

PHP中有一个简单的功能可以检查给定年份的月份中的天数:

cal_days_in_month(CAL_GREGORIAN, 2, 2005); // 28