【发布时间】:2014-03-14 05:17:17
【问题描述】:
我正在努力进行一些日期验证。我创建了 3 个不同的函数,它们都可以工作,但在特殊情况下不行。
我做的最后一件事是:
public function valid_date($date, $format = 'd/m/Y'){
$d = DateTime::createFromFormat($format, $date);
return $d && $d->format($format) == $date;
}
我从 php 站点获得了这个函数,我认为它比我的更好,所以我替换了它。
用户必须输入的日期格式为 dd/mm/YYYY,数据库格式为 yyyy-mm-dd 00:00:00
当我输入这个无效日期:30/30/1996 时,该函数将其识别为有效日期。然后我有另一个函数来分解“/”并使它像带有“-”的数据库格式,在那个函数中它给了我错误:
DateTime::__construct():在位置 6 (0) 解析时间字符串 (1996-30-30) 失败:意外字符'
public function explodingDates($date){
list($day,$month,$year) = explode('/', $date);
$newDate = $year.'-'.$month.'-'.$day;
return (new \Datetime($newDate));
}
我在这里烧了我的大脑,不知道还能做些什么来进行验证。它还必须准备好接收任何类型的输入(如“askhdakjdh”、“123213”、“1.25/269”)并返回无效日期。
提前致谢
【问题讨论】:
-
@Fred-ii- 简而言之:不应该。您是否建议分配给表达式?
-
return 中有一个 '\' 是不是拼写错误?
-
@Fred-ii- 为什么 public 会导致错误?
标签: php codeigniter validation date