以下是我之前验证日期的方法。我也有自己的函数来转换日期格式,但是,现在使用 PHP 的 DateTime 类,因此不再需要它们。我应该如何最好地使用 DataTime 验证有效日期?还请告诉我您是否认为我应该首先使用 DataTime。谢谢
附言。我使用面向对象的风格,而不是过程风格。
static public function verifyDate($date)
{
//Given m/d/Y and returns date if valid, else NULL.
$d=explode('/',$date);
return ((isset($d[0])&&isset($d[1])&&isset($d[2]))?(checkdate($d[0],$d[1],$d[2])?$date:NULL):NULL);
}
你可以试试这个:
static public function verifyDate($date)
{
return (DateTime::createFromFormat('m/d/Y', $date) !== false);
}
这输出真/假。你可以回来DateTime
直接对象:
static public function verifyDate($date)
{
return DateTime::createFromFormat('m/d/Y', $date);
}
然后你会得到一个DateTime
对象或失败时为 false。
UPDATE:
感谢 Elvis Ciotti 指出 createFromFormat 接受无效日期,如 45/45/2014。
更多相关信息:https://stackoverflow.com/a/10120725/1948627 https://stackoverflow.com/a/10120725/1948627
我用严格的检查选项扩展了该方法:
static public function verifyDate($date, $strict = true)
{
$dateTime = DateTime::createFromFormat('m/d/Y', $date);
if ($strict) {
$errors = DateTime::getLastErrors();
if (!empty($errors['warning_count'])) {
return false;
}
}
return $dateTime !== false;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)