在花了 6 个多小时尝试这样做并尝试了许多不同的已发布解决方案之后,我只想问一个确切的问题。
我想让用户以 html 形式输入美国格式的日期和时间。今天的格式12/16/2012 02:53使用 24 小时时间格式。
让我们称之为 start_date。
然后我想将包含 start_date 的记录插入到 mysql 数据库中的 datetime 类型字段中。我正在使用 PHP 5.2。我看到的许多解决方案都需要 5.3,而 5.2 的解决方法都没有。
有人可以给我一个确切的例子。谢谢你。
实际上,您的日期格式无效,无法插入 mysql 表中,格式必须为 YYYY-mm-dd Hour:min:sec,以便放置在 datetime 字段中。但是如果你使用字段类型作为 varchar 你不需要关心格式。你可以插入任何你想要的格式。
或者你可以依赖 MySQL 解析:
SELECT STR_TO_DATE('12/16/2012 02:53', '%m/%d/%Y %H:%i')
注意:这需要两位数的月、日和小时,即 01 - 而不是 1。有关其他格式,请参阅MySQL 日期格式。
此外,为了使这种方法实用,您必须处理失败的解析尝试:例如,您可以设置 Datetime 列NOT NULL,以便在您尝试写入时所有插入或更新都会失败NULL(STR_TO_DATE将返回NULL无效日期)
您可以使用strtotime(). 它根据格式解析日期。例如,使用/(MM/DD/YYYY) 的日期使用美国格式解析,使用-或.(DD-MM-YYYY 或 DD.MM.YYYY) 的日期使用欧洲格式解析。请参阅文档中的第三个注释。
如果可能的话,你真的应该考虑升级到 5.4。在那里你可以使用非常好的日期类。
你问了一个例子,还没有人提供,所以这里是:-
$start_date = date("Y-m-d H:i:s", strtotime("12/16/2012 02:53"));
echo $start_date;
输出:-
2012-12-16 02:53:00
这种格式匹配MySql DateTime 类型。
请参阅此处的工作示例,该示例还演示了它在 PHP 5.2 中的工作原理。