如何根据am/pm值格式化字符串,以便通过strtotime和date传递?
我有一个有两个输入和一个选择元素的表单。
- 小时(输入)<-(字符串)从1到12
- 分钟(输入)<-(字符串)从0到59
- AM/PM(选择)<-(字符串)上午或下午
需要在MySql中插入DATETIME类型,该类型的格式需要为当前日期+用户选择的时间。
可能的字符串:"2:34:pm",插入格式为"2012-03-22 14:34:00"
我读到了可能重复的问题,但我相信是不同的情况。
步骤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(时间戳)将PHP的UNIX时间戳转换为格式完美的MYSQL日期。
普雷斯托!
假设您的变量命名为$hour
、$minute
和$ampm
:
$datetime = date('Y-m-d')
. sprintf(
' %02d:%02d:00',
($ampm == 'pm' ? ($hour % 12) + 12 : $hour % 12),
$minute
);