【问题标题】:Storing time in 24 Hr time-format into database with column type time以 24 小时时间格式将时间存储到具有列类型时间的数据库中
【发布时间】:2015-02-06 01:14:41
【问题描述】:

我正在尝试将时间节省到 MySQL 数据库中。我在数据库中将列类型保留为time。

从表格中我得到了$_POST 的 24 小时制时间。

时间表格中的值如下:

 $_POST[openTime] = 20:00

当我使用strtotime() 和date() 转换时间时,我得到的输出为:

$_POST['openTime'] = date( "h:i:s A", strtotime($_POST['openTime']));

输出:

$_POST[openTime] => 08:00:00 PM

所以我有一个三部分的问题:

  1. 我的做法是否正确?

  2. 我可以在上面执行的步骤之后将$_POST 的值直接存储到数据库中吗?如果在我存入数据库之前不需要什么处理?

所以在上面更改为$_POST['openTime']之后这里的值为:$_POST[openTime] => 08:00:00 PM

  1. 是否需要再次将从数据库中获取的时间值转换为 PHP 时间对象?

请注意,也会有基于时间的数据库操作。例如:“晚上 8 点以后有哪些地方开门?”

【问题讨论】:

    标签: php mysql codeigniter datetime time


    【解决方案1】:

    MySQL TIME 字段类型的格式类似于HH:MM:SS,范围从-838:59:59 到838:59:59。 Read more here。基于此,您不能存储像08:00:00 PM 这样的格式化时间。

    如果您已将开放时间发布为20:00,则需要使用H:i:s 格式:

    $_POST['openTime'] = date("H:i:s", strtotime($_POST['openTime']));
    

    但是恕我直言,这是不必要的。你需要的是一个验证,像这样:

    if (preg_match('~^\d{2}:\d{2}$~', $_POST['openTime'])) {
        echo "posted time is valid!";
        $saveTime = $_POST['openTime'] . ':00';
    }
    

    【讨论】:

    • 我曾尝试使用H:i:s,但它会将20:00 转换为08:00:00 而不是20:00:00 附加:00 确实有效。但我想处理date()...所以你能帮我解决这个问题吗?
    • @ArjunVarrier:那么您发布的内容与20:00 不同。给我看var_dump($_POST['openTime']);,我们会看到,因为this code works。
    • var_dump($_POST['openTime']) 是 string(5) "14:30" 用于输入下午 2:30。我执行$_POST['openTime'] = date( "h:i:s", strtotime($_POST['openTime'])); 然后回显$_POST['openTime'] 输出是[openTime] => 02:30:00
    • @ArjunVarrier:日期格式h 和H 不同!请在这种情况下使用大写,就像我在答案和comment demo 中所说的那样。
    • 哦,非常抱歉...我没有意识到...这很有效谢谢:)
    猜你喜欢
    • 2016-02-01
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    相关资源
    最近更新 更多