格式化MYSQL的时间12小时时钟

时间:2012-03-23 18:48:43

标签: php mysql

如何根据am / pm值格式化字符串,以便它可以通过strtotime和date传递?

我有一个包含两个输入和一个选择元素的表单。

  • 小时(输入)< - (字符串)从1到12
  • 分钟(输入)< - (字符串)从0到59
  • 上午/下午(选择)< - (String)am或pm

需要插入MySql类型DATETIME,需要格式化为当天+用户选择的时间

可能的字符串:'2:34:pm',插入格式为'2012-03-22 14:34:00'

我读过可能重复的问题,但我认为是不同的情况。

2 个答案:

答案 0 :(得分:1)

第1步
生成UNIX时间戳(自1970年1月1日以来的秒数)。

$time = mktime($_POST["hour"], $_POST["minute"], 0);

$_POST["hour"]应采用24小时格式。您需要进行基本输入检查,以确保$_POST["hour"]$_POST["minute"]的值有效。

将12小时转换为24小时制:

if ($_POST["ampm"] == "pm")
    $_POST["hour"] = ($_POST["hour"] % 12) + 12;

第2步
存储到MySQL。

mysql_query("INSERT INTO table (date) VALUES (FROM_UNIXTIME($time))");

FROM_UNIXTIME(timestamp)会将PHP的UNIX时间戳转换为完美格式化的MYSQL日期。

的Presto!

答案 1 :(得分:0)

假设您的变量名为$hour$minute$ampm

$datetime = date('Y-m-d')
          . sprintf(
                ' %02d:%02d:00',
                ($ampm == 'pm' ? ($hour % 12) + 12 : $hour % 12),
                $minute
            );