首页 > 解决方案 > 如何验证特定年份的二月天数?

问题描述

如何验证具体日期?例如用户类型 29-12-2005。当然我可以用正则表达式等来验证它。但是2005年的2月份还没有29天。任何日期功能和方法都没有帮助我。

标签: phpdate

解决方案


您可以使用Last day of this month

例如

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

输出:

31

沙盒

请注意,这是针对 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,它将接受多种格式而不会出现问题。


推荐阅读