3

我想验证一个应该保存为日期的字符串。我希望用户在此表单中给出日期format ('d-m-Y)。我正在使用此函数来检查是否给出了有效日期:

function isDateValid($birthdate)
{
  $date = date('Y-m-d', $birthdate);        

  $stamp = strtotime(str_replace('/', '-', $date), $date);

  if (!is_numeric($stamp))
     return FALSE;

  //checkdate(month, day, year)
  if ( checkdate(date('n', $stamp), date('d', $stamp), date('Y', $stamp)) )
  {
     return TRUE;
  }
  return FALSE;
} 

这适用于这种格式 dmy 的每个条目。但是当给定这样的格式时 d/m/Y ,它仍然返回 true 但日期会像这样 m/d/Y 保存在数据库中。

我能做些什么来确保这种格式“d/m/y”的条目无法保存在数据库中。

提前致谢

找到了解决方案

好的,我想我找到了解决方案

if(!preg_match('/^(\d\d?)-(\d\d?)-(\d\d\d\d)$/', $birthdate, $matches))
{
  return false;
}
return checkdate($matches[2], $matches[1], $matches[3]);

我检查是否给出了正确的模式,然后检查它是否是有效日期。这对我来说很好,谢谢!

4

1 回答 1

0

您可以使用正则表达式模式,例如:*\d{4}-\d{2}-\d{2}*检查格式

于 2012-05-03T12:44:16.613 回答