处理Php / Mysql中的时间

时间:2012-12-05 08:36:07

标签: php mysql

我非常困惑。例如,我正在添加一条记录,时间也应该填满,然后我填写时间文本框,格式如下午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),以正确的方式将其存储在数据库中,并准确显示或检索此数据它的输入方式。

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

我知道网络上有这么多资源,但我想在编程方面为我这样的新手提供直接而明确的答案。

6 个答案:

答案 0 :(得分:19)

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

使用需要HH:MM:SS(24小时)时间格式的MySQL TIME数据类型。

示例:

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

产地:

  

18时三十分00秒

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

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

产地:

  

下午6:30

答案 1 :(得分: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)。

答案 2 :(得分: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

答案 3 :(得分:1)

你可以尝试这样的事情:

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

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

大多数情况下,最好的方法是使用正确的格式将数据存储到mysql数据库。如果您在这里只有timedata,我建议该列的时间格式。日期时间和时间戳只有在你有完整日期和时间部分时才能使用,例如2012-12-05 09:54:32(或时间戳1354697672)。

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

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

我希望这会对你有所帮助。

答案 4 :(得分:0)

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

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

使用strftimestrtotime功能:

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

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

答案 5 :(得分:0)

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

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

希望有所帮助。