Keputusan yang tidak dijangka berlaku apabila mengira perbezaan masa dalam saat dalam PHP dengan menukar dua tarikh kepada cap waktu Unix.
P粉237029457
2023-09-03 09:22:01
<p>Seperti tajuk, saya cuba mencari perbezaan dalam saat dan kemudian menukar saat tersebut kepada hari dan jam. </p>
<p>Selepas membaca dan mengikuti soalan yang serupa, saya membina fungsi yang menambah jam, hari, minggu, bulan atau tahun yang saya mahukan kepada tarikh tarikh hari ini dan saya mendapat hasil yang betul daripada bahagian ini. </p>
<p> Walau bagaimanapun, saya kemudian cuba menukar dua tarikh (tarikh mula dan tarikh alih) kepada cap waktu unix, menolak kedua-dua cap masa untuk mencari perbezaan antara dua tarikh dalam beberapa saat, dan kemudian menukar saya tidak mendapat hasil yang saya jangkakan untuk hari atau minit (/86400 dan /3600). </p>
<p>Ini ialah kodnya..</p>
<pre class="brush:php;toolbar:false;"><?php
$dateTimeNow = tarikh();
fungsi dateTimeShift($dateTimeIn, $lengthNum, $lengthWord) {
$shifted = date("Y-m-d H:i:s", strtotime($dateTimeIn." + $lengthNum $lengthWord"));
$perbezaan = strtotime($shifted)-strtotime($dateTimeIn);
kembalikan "br>
}
echo dateTimeShift($dateTimeNow, "1", "hari");
?></pra>
<p>Hasil semasa ialah...</p>
<blockquote>
<p>2023-01-04 09:37:51 >
</blockquote>
<p>Saya menjangkakan ia akan menjadi seperti ini</p>
<blockquote>
<p>2023-01-04 09:37:51 >
</blockquote></p>
Masalahnya ialah anda menggunakan fungsi date() tanpa parameter, cuba gunakan ini:
Output: