2012-08-01 16 views
5

Ho due campi di testo, uno per la data nel formato 08/01/2012 e un secondo campo contenente l'ora. Al momento ho il campo temporale nel formato 09:41 ma ho una certa flessibilità con il suo formato (se 24 ore è più facile, per esempio).PHP Conversione di data e ora della stringa in MySQL DateTime

Stavo pianificando solo il concatenamento delle stringhe e quindi la conversione. Devo prima convertire la data al 2012-08-01?

Come posso finire la conversione in datetime (2012-08-01 09:41:00)? Come riconvertirlo in un formato 08/01/2012 e 09:41 am?

+0

Vedere ['strtotime'] (php.net/manual/en/function.strtotime.php) e [' date'] (php.net/manual/en/function.date.php). Concat, 'strtotime', quindi' date' in qualsiasi formato tu voglia. – Palladium

+0

Quindi, stai memorizzando la data e l'ora come semplici stringhe ...? – knittl

+0

no, sto memorizzando come datetime, ma ho bisogno di mostrare la data e l'ora in campi separati su una pagina. La data deve essere in un determinato formato per funzionare con un datepicker jQuery. – Motive

risposta

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

Perfetto, e 'SELECT DATE_FORMAT ('2012-01-08 09:41:00', '% r')' per riconvertire sembra funzionare anche. Grazie! – Motive

2

Sul lato database, è possibile utilizzare:

STR_TO_DATE() utilizzando i committenti in this table per convertire in un formato amichevole di database. Reference

DATE_FORMAT() restituirà quindi qualsiasi parte desiderata del tempo di quel database. Reference

Sul lato PHP è possibile utilizzare:

  • strtotime() - parse di ogni inglese descrizioni testuali di datetime in un timestamp Unix
  • date - Formatta una data/orario locale

strotime produrrà un timestamp Unix basato su qualsiasi stringa data/ora che gli verrà passata. Se passi entrambi i campi (08/01/2012 & 09:41 am) produrrà un timestamp basato su di esso. Per invertire la procedura, utilizzare 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); 

Non l'ho provato, ma dovrebbe funzionare.

Problemi correlati