2017-06-02 57 views
2

我必須使用UTC作爲我整個項目的默認值。PHP將日期時間與時區比較

date_default_timezone_set('UTC'); 

但是,在一個實例中,我需要能夠將DateTime與倫敦當前時間進行比較。但是,由於默認設置,TimeStamps和DateTime比較似乎只能比較任何DateTime的UTC值。例如:

$d = new DateTime(); 
$t = clone $d; 
$t->setTimezone(new DateTimeZone('Europe/London')); 

var_dump($t); 
{"date":"2017-06-02 15:41:34.000000","timezone_type":3,"timezone":"Europe\/London"} 

var_dump($d); 
{"date":"2017-06-02 14:41:34.000000","timezone_type":3,"timezone":"UTC"} 

小時顯示1小時的差異是正確的。但是:

var_dump($d == $t); 
true 
var_dump($d->getTimeStamp() == $t->getTimeStamp()); 
true 

我想顯示倫敦時間($ t)大於UTC時間($ d)。

有沒有辦法做到這一點?

回答

3

時間戳總是UTC,所以你總是得到相同的值,不管是什麼時區的對象是目前在。

1

其實我解決它自己。以原始帖子中的示例做

time() + $t->getOffset(); 

這是當前時間+倫敦日期時間(當前是3600)的時區偏移量。