Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pengaturan server Web dan Database untuk mendapatkan zona waktu UTC dengan benar

Jika Anda membatasi diri Anda pada tipe DATE dan DATETIME MySQL, Anda sebagian besar dapat mengabaikan masalah zona waktu di MySQL itu sendiri. Anda ingin menghindari tipe TIMESTAMP MySQL karena:

Sejauh membaca/menulis nilai DATETIME, Anda akan mendapatkan kembali persis apa yang Anda masukkan, dan itu bagus.

Itu membuat Anda kesulitan untuk selalu memastikan Anda menulis nilai UTC ke database.

Cara terbaik untuk memastikan bahwa PHP menggunakan UTC adalah dengan menyetelnya secara eksplisit di aplikasi Anda menggunakan date_default_timezone_set() . Itu akan memastikan bahwa panggilan seperti date('Y-m-d H:i:s') akan memberi Anda nilai UTC. Ini juga akan memastikan bahwa sesuatu seperti (new \DateTime('now'))->getTimezone() akan mengembalikan contoh \DateTimeZone UTC.

Anda harus mencatat, tentu saja, bahwa segala sesuatunya menjadi jauh lebih sulit ketika Anda menyimpan nilai tanggal/waktu yang Anda ambil dari pengguna. Dalam kasus tersebut, Anda harus entah bagaimana menentukan zona waktu pengguna, dan menangani konversi ke UTC sebelum mempertahankan nilainya. Dengan asumsi pengguna Anda memiliki beberapa pengaturan zona waktu per pengguna, pada dasarnya Anda melakukan sesuatu seperti:

/** @var \DateTimeZone $userTZ */
$userTz = getUserTimezone();
$dateTime = new \DateTime($user_submitted_date_string, $userTz);
$dateTime->setTimezone(new \DateTime('UTC'));
$dateTimeStr = $dateTime->format('Y-m-d H:i:s');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memuat lebih banyak item dari database ~ Gulir Tak Terbatas

  2. tidak dapat masuk di instance sql penyimpanan cloud google

  3. Pohon MySQL dipesan oleh orang tua dan anak

  4. Nomor parameter tidak valid:tidak ada parameter yang terikat

  5. Cara menangkap dan melempar kembali semua kesalahan di MySQL