[英]How do I correct for daylight savings time with strtotime
我有一個函數,用於為過期的訂閱續訂返回新的過期期限。 如果用戶續約一個月,則該函數如下所示:
$unixtime = strtotime(" today + 1 month") + 86399;
$dt = date("Y-m-d", $unixtime) . ' at ' . date("H:i:s", $unixtime);
return array('unixtime' => $unixtime, 'dt' => $dt);
今天是2月10日,我希望它在2019年3月10日23:59:59返回dt。 但是,它在dt作為2019-03-11在00:59:59返回。 實際上,根據UTC返回的Unix紀元時間是正確的,但是當我返回dt時,它沒有考慮從標准時間到DST的變化。 我還懷疑當秋天的時間重疊時,新的到期時間將縮短一個小時,即22:59:59。
有任何想法嗎?
謝謝。
arueckauer回答了我的問題...但是當他發布消息時,我遭到了兩指黑客的攻擊,並提出了以下建議,該方法也有效:
$dt = date("Y-m-d 23:59:59", time());
$unixtime = strtotime("$dt + 1 month");
$newDT = = date("Y-m-d", $unixtime) . ' at ' . date("H:i:s", $unixtime);
unixtime是用戶登錄時系統查看的內容,而newDT是顯示的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.