我正在尝试验证日期以查看它是否与 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")
它有效。
我不知道我做错了什么
======================
现在我想了一下,我只需要验证日期时间字符串的 houre:min 部分。
我手动添加秒数,日期是由日期选择器强制添加的,用户无法编辑它
最佳答案
你让你的工作变得更加困难。在 php 中,有许多日期处理函数,这意味着您不必像字符串一样对待日期。因此,不要测试您的输入日期格式是否正确,而只需坚持正确的格式:
$adate= date_create('January 6, 1983 1:30pm'); //date format that you don't want
$mysqldate= $adate->format("Y-m-d h:i:s");//date format that you do want
还有一些函数可以检查日期是否是真实日期,例如 checkdate .
关于php - preg_match 用于 mysql 日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5145133/