php - preg_match 用于 mysql 日期格式

标签 php mysql regex string preg-match

我正在尝试验证日期以查看它是否与 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)

http://pastebin.com/pFZSKYpj

但是如果我手动将日期字符串插入到 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/

相关文章:

regex - 为什么在 Makefile 中使用 "$$"(两个美元符号)而不是 "$"(一个美元符号)来删除空行?

php - 如何在不干扰 HTML 标签的情况下从 php 字符串中剥离字符

php - 从 WordPress 中删除重复的帖子

mysql - 如何正确格式化此 MySQL JOIN 语句?

mysql - SQL - 连接数据

Java 正则表达式 : How to remove substrings encased in specific delimiters

regex - Bash:正则表达式

php - "WHERE column IS NOT NULL"与 Kohana v3 查询生成器

php - Azure AD 组配置 : not getting PATCH request from AD when updating the group

mysql - 选择字段为非空的所有项目