如何验证此格式的日期是否有效? Y-m
对于一个实例,日期为2016-00
,这应该返回为无效,因为没有00
这样的月份。
2016-01
应该返回为有效,因为01
表示为1月。
我尝试使用Date::createFromFormat('Y-m', '2016-00')
,但它会返回:
object(DateTime)[682]
public 'date' => string '2015-12-25 06:07:43' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'Antarctica/Casey' (length=16)
将其视为有效日期。
答案 0 :(得分:1)
这是一种解决方法,但我认为它有效。您可以使用此功能:
function validateDate($date, $format)
{
$dateTime = \DateTime::createFromFormat($format, $date);// create a DateTime object of the given $date in the given $format
return $dateTime && $dateTime->format($format) === $date;// returns true when the conversion to DateTime succeeds and formatting the object to the input format results in the same date as the input
}
var_dump(validateDate('2016-00', 'Y-m'));// returns false
var_dump(validateDate('2016-01', 'Y-m'));// returns true
复制
在你的情况下,它将返回false,因为$dateTime->format($format) == $date
将返回false。
希望这有帮助。