Zend框架2验证日期

时间:2016-06-24 22:09:00

标签: php validation date zend-framework zend-framework2

如何验证此格式的日期是否有效? 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)

将其视为有效日期。

1 个答案:

答案 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

函数已从此answerphp.net

复制

在你的情况下,它将返回false,因为$dateTime->format($format) == $date将返回false。

希望这有帮助。