如何从<select>输入时间到mysql并输出am / pm?</select>

时间:2011-03-22 01:13:18

标签: php mysql forms

嘿伙计们,我正在做这个表格,其输入将包含时间,我想让它成为当用户选择时间时(例如上午8:30),它将存储在mysql中,并且将会确切的时间(早上8:30)由PHP输出。

这是表格。一个简单的选择按钮,时间增量为30。

http://jsfiddle.net/jXVPS/

主要问题是我不知道如果它是AM / PM,mysql将如何识别?

我应该为选择字段添加什么值,如何将其插入到mysql数据库中,并让mysql或php识别它是在凌晨1点或下午1点。在mysql中是否有某种24小时时钟可以识别是否是AM / PM?

3 个答案:

答案 0 :(得分:2)

使用TIME column type

  

<强> TIME

     

一个时间。范围是'-838:59:59'到'838:59:59'。 MySQL以'HH:MM:SS'格式显示TIME值,但允许您使用字符串或数字为TIME列分配值。

它会很好地解析选择选项中的值。


修改:使用示例:

// saving in the db
$sql = "
  INSERT INTO table_name SET
  # ...
  name_of_the_time_column = '" . mysql_real_escape_string($_POST['start_time']) . "'";

// retrieving from the db
$sql = "
  SELECT id, ..., TIME_FORMAT(name_of_the_time_column, '%h:%i:%s %p') AS formatted_time
  FROM table_name
  # ...
  ";

答案 1 :(得分:0)

未经测试:

INSERT INTO myTable
SET time = TIME(STR_TO_DATE('8:30:00 AM','%h:%m:%s %p'))

答案 2 :(得分:0)

这是MySQL的时间/日期。我认为TIME类型最适合您,因为您不需要日期,并且您为您的值获得的格式应该很合适。我认为你可以把它们作为完全相同的字符串。

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-types.html

通过表单提交或ajax提交并且您的响应PHP页面接管后,在PHP中使用以下字符串执行查询:
"INSERT INTO table (userId, time, ...) VALUES (..., '$inTime', ...)"

然后回复它,因为你希望下一页重复它。


对评论的回应

我想你的意思是,当你在以后回复它时,你希望13:00:00成为1:00 PM吗?

Theres可能是你可以用PHP或MySQL的时间函数做的(下面的PHP,上面的MySQL),但我不知道从内存中这很简单,你可以自己做。 http://www.php.net/manual/en/ref.datetime.php

$time = //get time field from MySQL
list($h, $m, $s) = explode($time, ':');
if ($h > 12) {$h -= 12; $amOrPm = 'PM'}; else {$amOrPm = 'AM';}
if ($h == 0) {$h = 12;}

echo "$h:$m $amOrPm";

PS - 13:00:00是下午1点,不是上午。