如何将am / pm格式的时间插入数据库

时间:2012-12-04 16:18:30

标签: php mysql

因此我尝试使用输入文本字段将时间插入数据类型为TIME的数据库表中。

我想插入的时间格式应该是这样的:

H:MM pm //示例:下午6:30

问题是am / pm不会插入我的数据库表中。 只有小时和分钟。

请告诉我如何解决这个问题。 使用示例代码更好。感谢。

7 个答案:

答案 0 :(得分:6)

数据类型TIME用于存储时间数据类型 - 这意味着没有AM / PM。将数据以24小时格式存储在您的数据库中,并使用以下方法之一将其格式化为12小时格式,使用am / pm(PHP或MySQL):

PHP:

$date = new DateTime($mysql_column['time']);
$date->format('h:i:s a');

或:

$date = date('h:i:s a', strtotime($mysql_column['time']));

或MySQL:

SELECT DATE_FORMAT('%h:%i:%s %p', time) FROM table;

答案 1 :(得分:3)

TIME存储为标准格式(18:30:00),以及显示它时所需的格式(使用DateTime对象或日期函数)。

MySQL在存储时间数据时不支持额外的格式。

答案 2 :(得分:1)

我认为您希望在数据库中使用实际格式在数据库中添加jquery time picker值。

这里我写了一些函数

function update_time($time){
    $ap = $time[5].$time[6];
    $ttt = explode(":", $time);
    $th = $ttt['0'];
    $tm = $ttt['1'];
    if($ap=='pm' || $ap=='PM'){
        $th+=12;
        if($th==24){
            $th = 12;
        }
    }
    if($ap=='am' || $ap=='AM'){
        if($th==12){
            $th = '00';
        }
    }
    $newtime = $th.":".$tm[0].$tm[1];
    return $newtime;
}
$time = update_time($_POST['time']); //here I am calling the function now you can insert the value in db

您只需调用该函数并将返回的值插入数据库即可。 在打印时,您可以执行类似echo date("h:i A",strtotime($time));

的操作

答案 3 :(得分:0)

将字段类型更改为varchar。 TIME无法像那样存储它。但是,请记住,按照您的意愿存储它会使提供本地化结果变得更加困难,如果这是您最终需要的。也就是说,如果您不存储时间戳本身,则时区支持变得困难,而是用户友好的表示。

编辑:或者,正如上面评论中所指出的那样,DATETIME也可以正常工作。

答案 4 :(得分:0)

您可以在PHP中使用DateTime对象,它具有从任何格式创建时间对象的功能,还具有以任何格式输出时间的功能

<?php
     $date = DateTime::createFromFormat('j-M-Y', '15-Feb-2009');
     echo $date->format('Y-m-d');
?>

http://php.net/manual/en/datetime.createfromformat.php

答案 5 :(得分:0)

您最好将字段类型更改为“VARCHAR(32)”,然后使用PHP编写时间。

Example: date('m/d/y g:i:sa');

为什么你要存储am或pm?如果将日期/时间存储为unix纪元时间戳,则可以在程序中格式化日期,而不是数据库。

Example: time(); - Store this in an INT(8) field.
         date('m/d/y g:i:sa, $time()); - Output from DB like this.

答案 6 :(得分:0)

在日期变量之后尝试.ToShortTimeString()。