我需要强迫用户输入类似于"ddmmYYYY“的日期,例如: 14012022
我面临的问题是,我不能仅仅使用以下方式来强制使用这种格式:
DateTime::createFromFormat('dmY', '14012022');
例如,对于"02012022“的DateTime::createFromFormat('dmY', '212022')
,它不会返回false,虽然在结束时日期仍然是错误的。
有没有办法强迫用户传递我所期望的确切格式,即"ddmmYYYY“?
我需要2位数字的一天,2位数字的月份,4位数字的一年至关重要。
谢谢
发布于 2022-06-15 00:55:34
如何通过将日期转换为字符串来进行加法检查?
$inputDate = '212022';
$date = DateTime::createFromFormat('dmY', $inputDate);
$valid = $date && $date->format('dmY') == $inputDate;
因为手册上说,
用于解析数字的
字母允许在逻辑范围之外的范围内有广泛的值。
因此,像'32132022‘这样的字符串对于createFromFormat
是有效的输入,上面的方法将帮助您避免这样的日期字符串。
https://stackoverflow.com/questions/72627595
复制