我需要檢測時間戳是否在夏令時。夏時制在php中如何工作(php和hhvm之間的區別)?
我使用此代碼來測試功能:
<?php
date_default_timezone_set('Europe/Berlin');
$timestamp = $baseTimestamp = 1509234900; // Sunday, 29 October of 2017 1:55:00 GMT+02:00 DST
$date = (new DateTime)->setTimestamp($baseTimestamp);
echo "DateTime\t\t| Is in summer \t| Minutes passed\n";
for($i = 0; $i < 70; $i++) {
$date = (new DateTime)->setTimestamp($timestamp);
echo $date->format("Y-m-d H:i:s \t|I") . "\t\t| " . ($timestamp - $baseTimestamp)/60 . "\n";
$timestamp = $timestamp + 60;
}
與歐洲/柏林工作,我已經看到了,在三月份的時候在2.00,我們從冬季通過到了夏天,php就解決了這個問題,但是在10月份,當它應該從夏天到冬天回到3.00時,它並不像預期的那樣工作。
在這種情況下,我們有兩個對應於同一小時的時間戳(在3是2),但時間戳是唯一的,所以對於2.00,夏天時間必須有一個時間戳,而冬天時間。
使用hhvm,它顯示正確的值,但正常的php解釋器顯示,這兩個都不是在夏天2.00(第一個,這是凌晨2點,第二個是凌晨3點,凌晨2點,這是一個應該說不再是夏天了)
...實際上看起來像我的錯誤。 – CD001
是的,我認爲是。試試這個: echo(new DateTime) - > setTimestamp(1509235200) - > getTimestamp(); 你會看到它輸出一個不同的時間戳。 HHVM不這樣做。 – Noogic