我有两个文本字段,一个是 08/01/2012 格式的日期,另一个是包含时间的字段。我目前有格式为 09:41am 的时间字段,但我对它的格式有一些灵活性(例如,如果 24 小时更容易)。
我打算只连接字符串然后转换。我应该先将日期转换为 2012-08-01 吗?
我怎样才能最终转换为日期时间(2012-08-01 09:41:00)?如何将其转换回 08/01/2012 和 09:41am 格式?
SELECT STR_TO_DATE(concat('08/01/2012', '09:41am'),'%d/%m/%Y%h:%i');
在数据库端,您可以使用:
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);
我没有对此进行测试,但它应该可以工作。