如何验证特定日期?例如,用户类型为29-12-2005。当然,我可以使用正则表达式等进行验证。但是2005年2月还没有29天。任何日期函数和方法都对我没有帮助。
答案 0 :(得分:1)
您可以使用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,它将接受多种格式而不会出现问题。
答案 1 :(得分:0)
PHP中有一个简单的功能可以检查给定年份的月份中的天数:
cal_days_in_month(CAL_GREGORIAN, 2, 2005); // 28