0

So im trying to insert a time using an input text field into a database table with data type TIME.

The format of time that I want to insert should be like this:

H:MM pm// example: 6:30 pm

The problem is the am/pm doesnt insert in my database table. Only the hour and minute.

Please give me idea how to solve this. Better with sample codes. Thanks.

4

7 回答 7

7

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

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;
于 2012-12-04T16:27:31.007 回答
4

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

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

于 2012-12-04T16:25:12.317 回答
1

我认为您想在数据库中使用实际格式在数据库中添加 jquery 时间选择器值。

这里我写了一些函数

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));

于 2014-12-17T08:56:02.773 回答
0

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

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

于 2012-12-04T16:21:38.760 回答
0

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

于 2012-12-04T16:53:06.407 回答
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

于 2012-12-04T16:24:31.220 回答
0

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

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

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

Example: time(); - Store this in an INT(8) field.
         date('m/d/y g:i:sa, $time()); - Output from DB like this.
于 2012-12-04T16:25:26.730 回答