1

在花了 6 个多小时尝试这样做并尝试了许多不同的已发布解决方案之后,我只想问一个确切的问题。

我想让用户以 html 形式输入美国格式的日期和时间。今天的格式12/16/2012 02:53使用 24 小时时间格式。

让我们称之为 start_date。

然后我想将包含 start_date 的记录插入到 mysql 数据库中的 datetime 类型字段中。我正在使用 PHP 5.2。我看到的许多解决方案都需要 5.3,而 5.2 的解决方法都没有。

有人可以给我一个确切的例子。谢谢你。

4

5 回答 5

2
  1. 使用正则表达式或字符串处理从当前格式中提取字段。
  2. 以 MySQL 格式创建日期。
  3. 插入数据库。

请参见此处:date_create_from_format 等效于 PHP 5.2(或更低版本)

于 2012-12-17T08:02:43.533 回答
2

实际上,您的日期格式无效,无法插入 mysql 表中,格式必须为 YYYY-mm-dd Hour:min:sec,以便放置在 datetime 字段中。但是如果你使用字段类型作为 varchar 你不需要关心格式。你可以插入任何你想要的格式。

于 2012-12-17T08:07:58.457 回答
2

或者你可以依赖 MySQL 解析:

SELECT STR_TO_DATE('12/16/2012 02:53', '%m/%d/%Y %H:%i')

注意:这需要两位数的月、日和小时,即 01 - 而不是 1。有关其他格式,请参阅MySQL 日期格式。

此外,为了使这种方法实用,您必须处理失败的解析尝试:例如,您可以设置 Datetime 列NOT NULL,以便在您尝试写入时所有插入或更新都会失败NULLSTR_TO_DATE将返回NULL无效日期)

于 2012-12-17T08:12:36.117 回答
0

您可以使用strtotime(). 它根据格式解析日期。例如,使用/(MM/DD/YYYY) 的日期使用美国格式解析,使用-.(DD-MM-YYYY 或 DD.MM.YYYY) 的日期使用欧洲格式解析。请参阅文档中的第三个注释

如果可能的话,你真的应该考虑升级到 5.4。在那里你可以使用非常好的日期类

于 2012-12-17T08:56:19.560 回答
0

你问了一个例子,还没有人提供,所以这里是:-

$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 中的工作原理。

请参阅strtotimedate的手册。

于 2012-12-17T18:54:02.177 回答