5

我有两个文本字段,一个是 08/01/2012 格式的日期,另一个是包含时间的字段。我目前有格式为 09:41am 的时间字段,但我对它的格式有一些灵活性(例如,如果 24 小时更容易)。

我打算只连接字符串然后转换。我应该先将日期转换为 2012-08-01 吗?

我怎样才能最终转换为日期时间(2012-08-01 09:41:00)?如何将其转换回 08/01/2012 和 09:41am 格式?

4

2 回答 2

6
SELECT STR_TO_DATE(concat('08/01/2012', '09:41am'),'%d/%m/%Y%h:%i');
于 2012-08-01T16:52:21.847 回答
2

在数据库端,您可以使用:

STR_TO_DATE()使用此表中的说明符转换为数据库友好格式。参考

DATE_FORMAT()然后将返回您想要的该数据库时间的任何部分。参考

在 PHP 端,您可以使用:

  • strtotime()- 将任何英文文本日期时间描述解析为 Unix 时间戳
  • date- 格式化本地时间/日期

strotime将根据传递给它的任何字符串日期/时间生成一个 Unix 时间戳。如果您同时传递您的两个字段(08/01/2012 和 09:41am),它将基于它生成一个时间戳。要反转该过程,请使用date("m/d/Y H:ia").

$field1 = '08/01/2012';
$field2 = '09:41am';

$stamp = strtotime($field1 . ' ' . $field2);

echo date("m/d/Y H:ia", $stamp);

我没有对此进行测试,但它应该可以工作。

于 2012-08-01T16:55:27.207 回答