Если я посмотрю на свои часы в 23: 59: 59 01: 00, что я должен ожидать увидеть?

#time #timezone

#время #Часовой пояс

Вопрос:

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

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

Я прав?

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

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

Спасибо.

Комментарии:

1. Ах, да — большинство часов показывают время и не сообщают вам о часовом поясе. Люди будут обедать в 12:00 (или около того), в каком бы часовом поясе вы ни находились. Если это не что-то вроде Китая (единый часовой пояс для всей страны), но в целом суть остается неизменной — местное время — это местное время. Если люди просыпаются в 07: 00 и ложатся спать в 23: 00 в одном часовом поясе, в другом местные жители будут делать то же самое. Хотя я не уверен, как это может быть вопросом программирования.

Ответ №1:

Строка 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"
}