Если я посмотрю на часы в T23: 59: 59 + 01: 00, что мне ожидать увидеть? - PullRequest
0 голосов
/ 06 марта 2019

Я немного растерялся по очень простому вопросу. Допустим, я нахожусь в часовом поясе +01: 00 и смотрю на часы, настроенные на текущий часовой пояс, на T23: 59: 59 + 01: 00. Я ожидаю увидеть это:

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

Я прав?

Если затем я лечу в часовой пояс + XY: 00, я соответствующим образом настраиваю свои часы и затем смотрю на свои часы в то же местное время, T23: 59: 59 + XY: 00, я ожидаю увидеть то же изображение.

Вообще говоря, формат просто означает «эй, мир! Это время, которое я имею в виду на местном уровне, просто будь осторожен, я на + XY впереди».

Спасибо.

1 Ответ

1 голос
/ 06 марта 2019

Строка T23:59:59+01:00 означает, что время здесь равно 23:59:59, а здесь составляет +1 час от UTC.

Это какесли вы звоните своему другу и говорите, что «время здесь равно 23:59, а мы GMT + 1».

Если вы передаете строку времени в PHPкак новый объект DateTime:

$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"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...