如何检查变量类型是否为日期时间


how can I check if a variable type is DateTime

请问如何在 php 上检查变量是否是日期时间类型?我已经试过了,但似乎不起作用。

public function setRegistrationDate ($registrationDate) {
   if (!is_date($registrationDate, "dd/mm/yyyy hh:mm:ss")) {
       trigger_error('registrationDate != DateTime', E_USER_WARNING);
       return;
   }
   $this->_registrationDate = $registrationDate;
}

我认为这种方式更简单:

if (is_a($myVar, 'DateTime')) ...

如果 $myVar 是 PHP DateTime对象,则此表达式为 true。

从 PHP 5 开始,这可以进一步简化为:

if ($myVar instanceof DateTime) ...
function validateDate($date, $format = 'Y-m-d H:i:s')
{
    $d = DateTime::createFromFormat($format, $date);
    return $d && $d->format($format) == $date;
}

参考:

  • http://www.php.net/manual/en/function.checkdate.php#113205
  • https://stackoverflow.com/a/12323025/67332

最简单的答案是: 用strtotime()函数检查

$date = strtotime($datevariable);

如果是有效日期,它将返回时间戳,否则返回 FALSE。

我将使用以下方法:

public function setRegistrationDate ($registrationDate) {
  if(!($registrationDate instanceof DateTime)) {
    $registrationDate = date_create_from_format("dd/mm/yyyy hh:mm:ss", $registrationDate)
  }
  if(!($registrationDate instanceof DateTime)) {
    trigger_error('registrationDate is not a valid date', E_USER_WARNING);
    return false;
  }
  $this->_registrationDate = $registrationDate;
  return true
}