如果我在T23:59:59 + 01:00观看手表,我应该看到什么?

时间:2019-03-06 08:34:53

标签: time timezone

在一个非常简单的问题上,我有点迷失了。假设我处于+01:00时区,并且我查看了受当前时区限制的时钟,时间为T23:59:59 + 01:00。我希望看到这个:

https://i.postimg.cc/dDcQ8MBm/23-59.png

我对吗?

如果然后我飞到+ XY:00时区,则相应地调整时钟,然后在同一本地时间T23:59:59 + XY:00上查看时钟,我希望看到同一张图片。

通常来说:该格式仅表示“嘿,世界!这是我在本地表示的时间,请注意我要提前XY小时”。

谢谢。

1 个答案:

答案 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"
}