在 PHP 中透過將兩個日期轉換為 Unix 時間戳記來計算時間差(以秒為單位)時出現不可預見的結果。
P粉237029457
P粉237029457 2023-09-03 09:22:01
0
1
595
<p>根據標題,我試圖找到以秒為單位的差異,然後將這些秒轉換為天和小時。 </p> <p>閱讀並遵循類似的問題後,我建立了一個函數,將我想要的小時、天、週、月或年添加到今天的日期時間,並且我從這部分得到了正確的結果。 </p> <p>但是,然後我嘗試將兩個日期(開始日期和移動日期)轉換為unix時間戳,減去兩個時間戳以找到兩個日期之間的差異(以秒為單位),然後轉換為天或分鐘(/86400和/3600)我沒有得到我預期的結果。 </p> <p>這是代碼..</p> <pre class="brush:php;toolbar:false;"><?php $dateTimeNow = date(); function dateTimeShift($dateTimeIn, $lengthNum, $lengthWord) { $shifted = date("Y-m-d H:i:s", strtotime($dateTimeIn." $lengthNum $lengthWord")); $difference = strtotime($shifted)-strtotime($dateTimeIn); return $shifted . " <br> " . floor($difference/86400) . " days or " . floor($difference/3600) . " hours" } echo dateTimeShift($dateTimeNow, "1", "day"); ?></pre> <p>目前的結果是..</p> <blockquote> <p>2023-01-04 09:37:51 > 19361 天或 464673 小時</p> </blockquote> <p>我預計會是這樣</p> <blockquote> <p>2023-01-04 09:37:51 > 1 天或 24 小時</p> </blockquote></p>
P粉237029457
P粉237029457

全部回覆(1)
P粉769413355

問題是您使用的是不帶參數的 date() 函數,請嘗試使用這個:

$dateTimeNow = date("Y-m-d H:i:s");

function dateTimeShift($dateTimeIn, $lengthNum, $lengthWord) {
    $shifted = date("Y-m-d H:i:s", strtotime($dateTimeIn." + $lengthNum $lengthWord"));
    $difference = strtotime($shifted)-strtotime($dateTimeIn);
    return $shifted . " <br> " . floor($difference/86400) . " days or " . floor($difference/3600) . " hours";
}

echo dateTimeShift($dateTimeNow, "1", "day");

輸出:

2023-01-04 09:57:31 <br> 1 days or 24 hours
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板