Bekerja dengan Tarikh Sebelum 1970 Menggunakan strtotime()
Masalah:
Anda mempunyai lajur teks dalam pangkalan data MySQL yang menyimpan tarikh dalam format yyyy-mm-dd. Kod PHP anda menggunakan strtotime() untuk menukar tarikh, tetapi anda mendapati ia hanya menghuraikan nilai selepas 1 Januari 1970. Banyak tarikh anda jatuh sebelum had ini dan anda tertanya-tanya jika terdapat penyelesaian tanpa mengubah struktur pangkalan data anda.
Penyelesaian:
Dokumentasi PHP rasmi menyerlahkan had julat tarikh bagi strtotime():
Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT
Pilihan 1: Naik taraf Versi PHP dan Sistem Pengendalian
Jika boleh, naik taraf kepada versi PHP yang sama atau lebih besar daripada 5.1.0 pada platform yang menyokong julat tarikh lanjutan.
Pilihan 2: Gunakan DateTime PHP Objek
Pertimbangkan untuk menggunakan objek DateTime untuk tarikh di luar julat strtotime(). Mereka memberikan fleksibiliti yang lebih besar.
Pendekatan Prosedur:
$date = date_create($row['value']); if (!$date) { $e = date_get_last_errors(); foreach ($e['errors'] as $error) { echo "$error\n"; } exit(1); } echo date_format($date, "F j, Y");
Pendekatan OOP:
try { $date = new DateTime($row['value']); } catch (Exception $e) { echo $e->getMessage(); exit(1); } echo $date->format("F j, Y");
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Tarikh Sebelum 1970 dalam PHP Apabila Menggunakan `strtotime()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!