PHP将DateTimes与时区进行比较

时间:2017-06-02 14:52:17

标签: php codeigniter datetime timezone

我必须使用UTC作为整个项目的默认值。

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)。

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:3)

时间戳始终以UTC为单位,因此无论对象当前处于什么时区,您都将始终获得相同的值。

答案 1 :(得分:1)

我实际上是自己解决了这个问题。以原始帖子为例,进行

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

是当前时间+伦敦日期时间的时区偏移量(目前为3600)。