Nilai tanggal/waktu/datetime disimpan di MySQL saat Anda menyediakannya. Yaitu. jika Anda INSERT
string 2012-04-17 12:03:23
menjadi DATETIME
kolom, itulah nilai yang akan disimpan. Ini akan diubah secara internal menjadi stempel waktu yang mungkin akurat atau tidak (lihat di bawah), tetapi ketika Anda menanyakan nilai lagi, Anda akan mendapatkan nilai yang sama kembali; perjalanan pulang pergi transparan.
Masalah dapat terjadi jika Anda mencoba melakukan perhitungan waktu di dalam SQL. Yaitu. setiap operasi yang memerlukan SQL untuk memperhitungkan zona waktu dan/atau waktu server. Misalnya, menggunakan NOW()
. Untuk salah satu operasi tersebut, zona waktu dan/atau waktu server harus diatur dengan benar. Lihat Masalah Zona Waktu
.
Jika itu tidak menjadi perhatian Anda dan Anda hanya perlu melakukan perhitungan di PHP, Anda hanya perlu memastikan bahwa Anda tahu dari zona waktu mana ke zona waktu mana yang ingin Anda konversi. Untuk tujuan itu bisa nyaman untuk menstandardisasi semua waktu ke UTC, tetapi itu tidak perlu, karena konversi zona waktu dari zona waktu mana pun ke zona waktu lainnya juga berfungsi, selama Anda jelas tentang zona waktu mana Anda akan mengkonversi dan ke.
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');