在一个非常简单的问题上,我有点迷失了。假设我处于+01:00时区,并且我查看了受当前时区限制的时钟,时间为T23:59:59 + 01:00。我希望看到这个:
我对吗?
如果然后我飞到+ XY:00时区,则相应地调整时钟,然后在同一本地时间T23:59:59 + XY:00上查看时钟,我希望看到同一张图片。
通常来说:该格式仅表示“嘿,世界!这是我在本地表示的时间,请注意我要提前XY小时”。
谢谢。
答案 0 :(得分:1)
字符串T23:59:59+01:00
表示时间此处是23:59:59,而 here 是距UTC +1小时的时间。
就好像您在打电话给您的朋友,并说“这里这里的时间是23:59,我们是GMT + 1”。
如果您将时间字符串作为新的DateTime对象提供给PHP:
$string = "T23:59:59+01:00";
$dt = new DateTime("@".strtotime($string));
var_dump($dt);
PHP将花费该时间并将其转换为服务器的本地时间(在我的情况下为UTC + 0),并包含时区:
object(DateTime)#1 (3) {
["date"]=>
string(26) "2019-03-06 22:59:59.000000"
["timezone_type"]=>
int(1)
["timezone"]=>
string(6) "+00:00"
}
我可以更改datetime对象的时区:
$timezone = new DateTimeZone('EST');
$dt->setTimezone($timezone);
var_dump($dt);
然后,PHP将在新时区中显示时间,并再次包含时区:
object(DateTime)#1 (3) {
["date"]=>
string(26) "2019-03-06 17:59:59.000000"
["timezone_type"]=>
int(2)
["timezone"]=>
string(3) "EST"
}