這是我的問題:
我們的服務器在一個有延遲的日期運行;
$now = new \DateTime("now", new \DateTimeZone('Europe/Paris') );
這意味著即使在法國實際上是下午 4 點,我們的服務器也會說是下午 2 點(或者可能是下午 6 點,我不記得方向……但我們有 2 小時的差異)。
這不是由于 php,而是由于我們的服務器配置。
當時鐘改變并且幾周前我們進入冬令時……增量差異從 2 小時差異變為 1 小時差異。
這意味著我必須調整我的代碼
從
$nowBeforeDelta = new \DateTime("now", new \DateTimeZone($gmt) );
$now = $nowBeforeDelta->sub(new \DateInterval("PT2H"));
到
$nowBeforeDelta = new \DateTime("now", new \DateTimeZone($gmt) );
$now = $nowBeforeDelta->sub(new \DateInterval("PT1H"));
這樣我就可以根據服務器正確地接收小時數……但是……你看到了我要去的地方……一旦夏天又來了……我將不得不再次改變。
所以,我的問題來了:我有沒有辦法知道,給定一個特定的日期,該日期是在冬令時還是夏令時?沒有得到日期和時間……只是得到了對冬天還是夏天這個問題的回應?
uj5u.com熱心網友回復:
您可以檢查給定的時區是否存在夏令時。
$date = new DateTime('now', new DateTimeZone('Europe/Berlin'));
$interval = $date->format('I') > 0 ? 'PT2H' : 'PT1H';
$now = $date->sub(new DateInterval($interval));
如檔案中所述,模具會I檢查日期是否處于夏令時。如果在冬季回傳 0,如果在夏季回傳 1。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/355208.html
