我必须使用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)。
有没有办法做到这一点?
答案 0 :(得分:3)
时间戳始终以UTC为单位,因此无论对象当前处于什么时区,您都将始终获得相同的值。
答案 1 :(得分:1)
我实际上是自己解决了这个问题。以原始帖子为例,进行
time() + $t->getOffset();
是当前时间+伦敦日期时间的时区偏移量(目前为3600)。