6

我很困惑。例如,我要添加一条记录,该记录也应该填写,然后我用下午 6:30 这样的格式填写时间文本框。

So how could I store this data into mysql database? What data type should I use?Because there are time,datetime and timestamp datatypes. What PHP functions should I use.

我真正想要实现的是以 H:MM am/pm 格式(例如 6:30 pm)获取用户输入的时间,以正确的方式将其存储在数据库中,并以完全相同的方式显示或检索这些数据被输入。

谁能帮助我了解如何使用 PHP 在 mysql 中存储和检索时间。请给我例子。

我知道网络上有很多资源,但我想为像我这样的编程新手提供直接而清晰的答案。

4

6 回答 6

22

如果您将时间作为6:30 PM用户输入,那么您可以strtotime()将其转换为时间戳,然后您可以将其格式化以存储在数据库中。

使用 MySQLTIME数据类型,它要求时间格式为 HH:MM:SS(24 小时)。

例子:

$dbFormat = date('H:i:s', strtotime('6:30 PM'));

产生:

18:30:00

这已准备好插入数据库。DATE_FORMAT()当您从数据库中检索它时,您可以使用该函数让 MySQL 将其格式化回原始格式。

SELECT DATE_FORMAT(mytime, '%l:%i %p') FROM mytable

产生:

下午6点30分

于 2012-12-05T08:48:01.810 回答
4

您可以使用时间戳将您的时间存储在 MySQL 数据库中。

时间戳时间:

<?php
    $time = strtotime($yourTime); //yourTime is the time from your input box.
?>

时间戳到时间:

<?php
    $time = date('g:i a', $yourTime); //yourTime is the time from the database.
?>

有关更多信息,请参阅: http: //nl1.php.net/manual/en/function.date.phphttp://php.net/manual/en/function.strtotime.php

编辑: 您可以在 MySQL 数据库中将时间戳值保存为 INT(11)。

于 2012-12-05T08:46:56.090 回答
2

您应该在 mysql http://dev.mysql.com/doc/refman/5.0/en/time.html中使用类型时间

时间以这种格式存储:HH:MM:SS

而对于 php 转换,

插入:

$time=strtotime('6:30 pm');
$data_bd=date("H:i:s",$time);
//And then insert into mysql field

提炼:

//Extract the data from mysql
$time=strtotime('18:30:00');
$data_print=date("g:i a",$time);

如果你想看这个过程:http ://codepad.org/gNdm4YIy


了解更多信息:

http://es2.php.net/manual/en/function.strtotime.php

http://es2.php.net/manual/en/function.date.php

于 2012-12-05T08:52:40.507 回答
1

你可以尝试这样的事情:

$time = '6:30pm';
$newTime = strftime('%H:%M:%S',strtotime($time));

现在你应该得到一个有效的 mysql 时间。

大多数情况下,以正确的格式将数据存储到 mysql 数据库中是最好的主意。如果您在这里只有时间数据,我推荐该列的时间格式。日期时间和时间戳只有在你有完整的日期时才应该使用,比如 2012-12-05 09:54:32(或时间戳 1354697672)。

要加载时间数据并将其格式化回 00:00am/pm 格式,您可以尝试:

$time = '18:30:00';
$newTime = strftime('%I:%M %p',strtotime($time));

我希望这能帮到您。

于 2012-12-05T09:01:39.590 回答
0

这完全取决于您的应用程序(您想要一天中的时间,还是绝对时间?,您想要做算术吗?等等)。

一个简单的解决方案可能是这样的:

使用strftimestrtotime函数:

$timestamp = strtotime("6:30 pm");
$timestring = strftime("%I:%M %P", $timestamp);

自纪元以来的$timestamp秒数,您可以将其作为 INT 存储在数据库中。

于 2012-12-05T08:45:49.060 回答
0

使用格式为 (YYYY-MM-DD HH:MM:SS) 的 MySQL 时间戳。您需要以 24 小时格式保存时间。如果您只是将其保存为 0000-00-00 18:30:00。

然后,当您检索时间时,只需使用 date('h:i A', $mysql_timestamp) 将其格式化为下午 6:30。

希望有帮助。

于 2012-12-05T09:11:29.610 回答