php - 如何验证特定年份的二月天数?
问题描述
如何验证具体日期?例如用户类型 29-12-2005。当然我可以用正则表达式等来验证它。但是2005年的2月份还没有29天。任何日期功能和方法都没有帮助我。
解决方案
您可以使用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,它将接受多种格式而不会出现问题。
推荐阅读
- c++ - xcode 10 和 11,没有高级语法着色 (c++)
- jquery - jquery 查找最后一个 tr 的最后一个 td,以便在单击最后一个 td 时添加新 tr
- asp.net-mvc - MVC远程验证属性列表参数名绑定
- ios - iOS apple-touch-icon 仅适用于一个 URL
- domain-driven-design - 将 CQRS 读取模型实现为聚合是一个好主意吗?
- python - 拆分和连接后,我没有找回所有的字符串
- php - 使用 phpmailer 库在 PHP 中 smtp connect() 失败
- julia - 如何在 Julia 中更改级别
- react-native - TypeError:当我在 createDrawerNavigator 中使用自己的组件作为 contentComponent 时,无法读取未定义的属性“默认”
- vue.js - 使用缩放插件在 chart.js 中获取当前缩放信息