I valori di data/ora/data/ora sono memorizzati in MySQL man mano che li fornisci. Cioè. se INSERT
la stringa 2012-04-17 12:03:23
in un DATETIME
colonna, questo è il valore che verrà archiviato. Verrà convertito internamente in un timestamp che potrebbe essere accurato o meno (vedi sotto), ma quando esegui nuovamente una query per il valore, otterrai lo stesso valore; il viaggio di andata e ritorno è trasparente.
Possono verificarsi problemi se si tenta di eseguire calcoli del tempo all'interno di SQL. Cioè. qualsiasi operazione che richieda che SQL tenga conto del fuso orario e/o dell'ora del server. Ad esempio, utilizzando NOW()
. Per ognuna di queste operazioni, il fuso orario e/o l'ora del server dovrebbero essere impostato correttamente. Vedi Problemi relativi al fuso orario
.
Se questo non ti riguarda e devi solo eseguire calcoli in PHP, devi solo assicurarti di sapere da quale fuso orario a quale fuso orario vuoi convertire. A tale scopo può essere conveniente standardizzare tutti gli orari in UTC, ma non è necessario, poiché le conversioni di fuso orario da qualsiasi fuso orario a qualsiasi altro fuso orario funzionano altrettanto bene, purché tu sia chiaro su quale fuso orario stai convertendo.
date_default_timezone_set('Asia/Tokyo'); // your reference timezone here
$date = date('Y-m-d H:i:s');
/* INSERT $date INTO database */;
$date = /* SELECT date FROM database */;
$usersTimezone = new DateTimeZone('America/Vancouver');
$l10nDate = new DateTime($date);
$l10nDate->setTimeZone($usersTimezone);
echo $l10nDate->format('Y-m-d H:i:s');