PHP, MySQL dan Zon Masa: Panduan Komprehensif
Zon masa boleh menjadi subjek yang kompleks dan mengelirukan, terutamanya apabila bekerja dengan PHP dan MySQL. Artikel ini bertujuan untuk memberikan pemahaman yang menyeluruh tentang topik, menangani kedua-dua soalan asal dan mata tambahan yang dibangkitkan dalam hadiah.
Menyimpan Tarikh Masa dalam MySQL
Untuk memastikan konsisten, adalah disyorkan untuk menyimpan semua datetime dalam MySQL dalam UTC. Ini menghalang masalah dengan Daylight Savings Time (DST) dan menjamin bahawa cap masa dikendalikan dengan bijak.
Memilih DATETIME vs. TIMESTAMP
DATIME harus digunakan dalam kebanyakan kes, kerana ia membolehkan julat nilai yang lebih luas dan memberikan lebih fleksibiliti. TIMESTAMP sesuai untuk situasi di mana cap masa automatik diperlukan dan julat nilai adalah terhad.
MySQL DATE dan Zon Masa
Nilai TARIKH MySQL tidak termasuk masa atau zon waktu maklumat, supaya mereka tidak dipengaruhi oleh zon waktu.
Memasukkan Nilai Menggunakan NOW()
Apabila memasukkan nilai menggunakan NOW(), pastikan zon waktu sambungan MySQL ditetapkan kepada UTC. Ini akan memastikan bahawa waktu tarikh yang dimasukkan adalah dalam UTC tanpa mengira zon waktu pelayan.
Menetapkan Zon Masa Digunakan oleh MySQL
Zon waktu sambungan MySQL harus ditetapkan kepada UTC secara berterusan , memastikan bahawa semua tarikh masa yang dikendalikan oleh MySQL adalah konsisten.
Mendapatkan Nilai daripada MySQL
Tarikh masa yang diambil daripada MySQL boleh dihantar dengan selamat kepada pembina PHP DateTime. Tentukan zon waktu UTC untuk memastikan pengendalian yang betul.
Menukar Antara Zon Waktu
Tukar PHP DateTimes kepada zon waktu tempatan pengguna secara gema, memastikan ia dipaparkan dalam format yang betul .
Waktu Penjimatan Siang (DST)
DST harus dikendalikan oleh zon waktu bernama yang disokong oleh PHP. Dengan menyimpan cap masa dalam UTC dan menukarkannya pada paparan, sistem secara automatik mengendalikan perubahan DST.
Membetulkan Data Sedia Ada Tanpa Zon Masa
Jika data telah dimasukkan sebelum ini tanpa zon waktu , adalah disyorkan untuk menggunakan fungsi CONVERT_TZ MySQL atau melakukan penukaran zon waktu asli pelayan semasa pemilihan dan kemas kini.
Pemilihan Zon Masa Pengguna
Hadirkan pengguna dengan senarai zon waktu yang dinamakan untuk dipilih. Ini membolehkan mereka memilih lokasi mereka dan menggunakan peraturan DST secara automatik.
Menggunakan PHP DateTimeZone untuk Pemilih Zon Masa
DateTimeZone boleh digunakan untuk menjana senarai masa yang tersedia zon. Kod berikut menunjukkan cara memaparkan masa dalam zon waktu yang berbeza:
$dt = new DateTime('now', new DateTimeZone('UTC')); foreach(DateTimeZone::listIdentifiers() as $tz) { $dt->setTimeZone(new DateTimeZone($tz)); echo $tz, ': ', $dt->format('Y-m-d H:i:s'), "\n"; }
Menentukan Zon Masa Pengguna Menggunakan JavaScript
Kelas Tarikh JavaScript boleh digunakan untuk menentukan ofset UTC pengguna dalam beberapa minit, menyediakan titik permulaan untuk mengecilkan senarai zon waktu yang mungkin.
Kesimpulan
Dengan mengikuti garis panduan ini dan memanfaatkan set alat PHP dan MySQL moden, anda boleh mengurus zon waktu dengan berkesan dan memastikan konsistensi dalam aplikasi.
Atas ialah kandungan terperinci Bagaimana untuk Mengurus Zon Masa dengan Berkesan dalam Aplikasi PHP dan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!