【发布时间】:2011-07-05 22:23:06
【问题描述】:
我正在尝试验证日期以查看它是否与 mysql 格式匹配
这是代码
$match = "/^\d{4}-\d{2}-\d{2} [0-2][0-3]:[0-5][0-9]:[0-5][0-9]$/";
$s = $this->input->post("report_start"). " " . $this->input->post("report_start_time").":00";
$e = $this->input->post("report_end"). " " . $this->input->post("report_end_time").":59";
if($this->input->post("action") != "")
{
echo trim($s). " => " . preg_match($match, trim($s));
echo "<br>";
echo trim($e). " => " . preg_match($match, trim($e));
}
日期格式进入 $s 和 $e 是
$s = 2011-03-01 00:00:00
$e = 2011-03-01 23:59:59
它们都返回 false (0)。
我在 http://www.spaweditor.com/scripts/regex/index.php 上测试了该模式,它返回 true (1)
但是,如果我手动将日期字符串转换为 preg_match 之类的
preg_match($match, "2011-03-01 00:00:00")
它有效。
我不知道我做错了什么
=======================
现在我考虑了一下,我只需要验证 datetime 字符串的 houre:min 部分。
我手动添加秒,日期由日期选择器强制,用户无法编辑它
【问题讨论】:
-
report_start和report_end的具体内容是什么? -
我没有使用 strtotime/date,因为如果日期/时间错误我想抛出错误,我不希望它默认为 00:00。这个 sn-p 是一个更大的函数的一部分,它返回给定日期范围之间记录的小时数,默认为 00:00 它会返回错误的小时数
-
var_dump on $s/$e 返回字符串(20)
-
对于日期时间验证,您可以使用this function。示例:
var_dump(validateDate('13:59:59', 'H:i:s'));
标签: php mysql regex string preg-match