Rumah >pembangunan bahagian belakang >masalah PHP >Apakah yang perlu saya lakukan jika penukaran cap waktu dalam php tidak tepat?
PHP ialah bahasa pengaturcaraan yang biasa digunakan yang menyokong pemprosesan cap masa. Cap masa merujuk kepada bilangan saat dalam komputer sejak 1 Januari 1970, dan selalunya digunakan untuk merekodkan apabila sesuatu peristiwa berlaku. Walau bagaimanapun, dalam PHP kita mungkin mendapati bahawa hasil penukaran cap masa kepada masa adalah tidak tepat. Artikel ini akan menerangkan sebab dan penyelesaian untuk cap masa yang tidak tepat.
Ramai pengaturcara PHP mungkin menghadapi masalah ini: apabila menukar cap masa kepada masa, hasilnya sentiasa tidak tepat. Sebagai contoh, kita boleh menukar cap masa kepada tarikh melalui kod berikut:
$timestamp = 1597833600; $date = date('Y-m-d H:i:s', $timestamp); echo $date;
Hasilnya adalah output sebagai 2020-08-19 07:00:00
, tetapi sebenarnya kali ini tidak tepat. Jika kita menjalankan kod ini pada komputer tempatan kita, terutamanya dalam zon waktu Cina, kita akan mendapati bahawa masa adalah 8 jam lebih awal daripada yang sebenarnya. Sebabnya adalah kerana fungsi date() dalam PHP menggunakan Greenwich Mean Time (GMT) secara lalai, bukan zon waktu yang kita ada.
Untuk menyelesaikan masalah ini, kita hanya perlu menetapkan zon waktu. Zon waktu boleh ditetapkan dengan memanggil fungsi date_default_timezone_set()
PHP Contohnya, jika kita menjalankan PHP dalam zon waktu Cina, kita boleh menggunakan kod berikut:
date_default_timezone_set('Asia/Shanghai');
Di sini, kami menetapkan masa. zon ke Asia/Shanghai , iaitu zon waktu China. Setelah ditetapkan, apabila menggunakan kod di atas untuk menukar cap masa kepada tarikh, output akan menjadi 2020-08-19 15:00:00
.
Selain menetapkan zon waktu kepada zon waktu tempatan, kami juga boleh menggunakan kelas DateTime dalam PHP untuk menyelesaikan masalah ini. Kelas DateTime ialah kelas berkuasa yang diperkenalkan dalam PHP 5.2.0 yang boleh mengendalikan tarikh dan masa, termasuk isu zon waktu.
Jika kami menggunakan kelas DateTime, kami boleh menggunakan kod sampel berikut untuk menukar cap masa kepada tarikh:
$timestamp = 1597833600; $date = new DateTime(); $date->setTimezone(new DateTimeZone('Asia/Shanghai')); $date->setTimestamp($timestamp); echo $date->format('Y-m-d H:i:s');
Dalam contoh ini, kami mula-mula mencipta objek DateTime dan kemudian menetapkan zon waktu ke zon waktu tempatan. Kami kemudian menetapkan cap masa dan memformatkannya sebagai output tarikh. Hasilnya ialah tarikh dan masa setempat yang betul, contohnya: 2020-08-19 15:00:00
.
Penyelesaian alternatif ialah menggunakan kelas Carbon, perpustakaan pihak ketiga yang memanjangkan kelas DateTime PHP. Menggunakan Karbon, kami boleh mengurus tarikh dan masa dengan mudah serta mengendalikan isu zon waktu.
Berikut ialah contoh kod untuk menukar cap masa kepada tarikh menggunakan kelas Karbon:
$timestamp = 1597833600; $date = \Carbon\Carbon::createFromTimestamp($timestamp, 'Asia/Shanghai'); echo $date->format('Y-m-d H:i:s');
Dalam contoh ini, kami mencipta objek Karbon menggunakan kaedah Carbon::createFromTimestamp()
dan menambah ia kepada Zon waktu ditetapkan kepada zon waktu tempatan. Kami kemudian memformatnya sebagai output tarikh dan outputnya ialah: 2020-08-19 15:00:00
.
Artikel ini membincangkan sebab dan penyelesaian untuk masa penukaran cap waktu yang tidak tepat dalam PHP. Kita boleh memilih untuk menetapkan zon waktu kepada zon waktu tempatan, menggunakan kelas DateTime atau menggunakan kaedah dalam kelas Karbon untuk mengendalikan cap masa dan zon waktu dengan betul. Dalam semua penyelesaian ini, adalah penting untuk memastikan bahawa zon waktu ditetapkan dengan betul dan ditetapkan kepada zon waktu tempatan sebelum menukar masa.
Atas ialah kandungan terperinci Apakah yang perlu saya lakukan jika penukaran cap waktu dalam php tidak tepat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!