2012-08-01 105 views
5

我有两个文本字段,一个是日期格式为08/01/2012的日期和第二个包含时间的字段。我目前的时间字段格式为09:41,但我对它的格式有一定的灵活性(例如24小时比较容易)。PHP将字符串日期和时间转换为MySQL DateTime

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

我该如何最终转换为datetime(2012-08-01 09:41:00)?如何将其转换为08/01/2012和09:41格式?

+0

请参阅['strtotime'](php.net/manual/en/function.strtotime.php)和['date'](php.net/manual/en/function.date.php)。 Concat,'strtotime',然后'日期'到任何你想要的格式。 – Palladium 2012-08-01 16:50:17

+0

因此,您目前正在将日期和时间存储为纯字符串...? – knittl 2012-08-01 16:50:29

+0

不,我存储为日期时间,但我需要在页面的单独字段中显示日期和时间。日期必须采用特定的格式才能使用jQuery datepicker。 – Motive 2012-08-01 16:54:40

回答

6
SELECT STR_TO_DATE(concat('08/01/2012', '09:41am'),'%d/%m/%Y%h:%i'); 
+0

完美,'SELECT DATE_FORMAT('2012-01-08 09:41:00','%r')'转换回来似乎也工作。谢谢! – Motive 2012-08-01 17:01:04

2

在数据库方面,你可以使用:

STR_TO_DATE()使用符在this table转换成数据库友好格式。 Reference

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

在PHP端可以使用:

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

strotime将根据传递给它的任何字符串日期/时间生成一个Unix时间戳。如果您通过了两个字段(2012年8月1日& 09:41 am),它将根据它生成时间戳。要逆转该过程,请使用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); 

我没有测试过这个,但它应该工作。

相关问题