1
開始學習有關php dateTime & dateTimezone對象。假設美國/東部的服務器在另一個時區創建一個時間,目標是在服務器時間內將時間(即倫敦)轉換並存儲在服務器上(美國/東部)。使用此代碼:如何計算正確的偏移量?
$runTime = '2013-04-10 07:45:00';
$serverTimezone = new DateTimeZone ('US/Eastern');
$checkinTimezone = new DateTimeZone ('Europe/London');
$checkinTime = new DateTime ($runTime, $serverTimezone);
$offset = $serverTimezone -> getOffset ($checkinTime);
echo "<br/><pre>";
echo 'London: ' . date ('Y-m-d H:i', $checkinTime -> format ('U')) . "<br/>";
echo "<br/>offset: " . $offset . "<br/>";
echo 'Local: ' . date ('Y-m-d H:i', $checkinTime -> format ('U') + $offset);
-14400總是在今天之前或之後(今天早些時候歐洲轉換爲DST)返回。在啊哈的時刻,我發現getOffset的說明文件爲Returns the timezone offset from GMT
。
有沒有簡單的方法將時間轉換爲US/Eastern?我是否必須進入getTransitions,查找DST開始的日期並手動進行計算?這隻在每個春季/秋季開關的第一天就很重要。
你總是想成爲無知服務器的時區。從UTC時間開始,然後轉換爲目標時區。我不是PHP開發人員,所以我不能提供編碼解決方案,但這是一般時區的最佳實踐。 –
@MattJohnson偉大的想法開始W/UTC和轉換。這在很大程度上是個問題...... – David