2017-06-02 83 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)的时区偏移量。