Mengapa Menambah Satu Hari pada Tarikh Kadang-kadang Gagal Berbalik ke Bulan Seterusnya?

Linda Hamilton
Lepaskan: 2024-11-22 00:45:12
asal
345 orang telah melayarinya

Why Does Adding One Day to a Date Sometimes Fail to Roll Over to the Next Month?

Menambah Satu Hari ke Tarikh: Menyelesaikan Isu Pertukaran Tarikh

Menambah satu hari pada tarikh sepatutnya secara intuitif menghasilkan tarikh satu hari kemudian . Walau bagaimanapun, dalam sesetengah senario, penambahan tarikh mungkin menghasilkan hasil yang tidak dijangka, khususnya apabila peralihan bulan terlibat.

Masalah:

Pertimbangkan kod berikut yang menambah tarikh dengan satu hari:

$stop_date = date('Y-m-d H:i:s', strtotime('2009-09-30 20:24:00'));
echo 'date before day adding: '.$stop_date;
$stop_date = date('Y-m-d H:i:s', strtotime('+1 day', $stop_date));
echo ' date after adding one day. SHOULD be rolled over to the next month: '.$stop_date;
Salin selepas log masuk

Apabila dilaksanakan, kod ini menghasilkan keputusan berikut, yang salah menunjukkan tarikh sebelum hari ditambah:

date before day adding: 2009-09-30 20:24:00
date after adding one day. SHOULD be rolled over to the next month: 2009-09-30 20:24:00
Salin selepas log masuk

Penyelesaian:

Untuk menyelesaikan isu ini, dua pendekatan boleh digunakan:

Pendekatan 1: Menggunakan Rentetan Format yang Betul untuk strtotime

Fungsi strtotime PHP memerlukan rentetan format khusus untuk menghuraikan dan mengubah suai tarikh dengan betul. Dalam kod yang disediakan, rentetan format yang digunakan ('Y-m-d H:i:s') hanya membenarkan manipulasi jam dan minit. Untuk mendayakan peralihan bulan, rentetan format mesti termasuk penentu 'Y-m-d':

$stop_date = date('Y-m-d H:i:s', strtotime('2009-09-30 20:24:00 ' . '+1 day'));
Salin selepas log masuk

Pendekatan 2: Menggunakan Kelas DateTime

Kelas DateTime yang diperkenalkan dalam PHP 5.2.0 menyediakan mekanisme yang lebih baik untuk manipulasi tarikh. Menggunakan objek DateTime, anda boleh menambah tarikh sehari secara terus:

$stop_date = new DateTime('2009-09-30 20:24:00');
echo 'date before day adding: ' . $stop_date->format('Y-m-d H:i:s');
$stop_date->modify('+1 day');
echo 'date after adding 1 day: ' . $stop_date->format('Y-m-d H:i:s');
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Menambah Satu Hari pada Tarikh Kadang-kadang Gagal Berbalik ke Bulan Seterusnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan