Разница в часе по дате и времени после добавления смещения летнего времени в php - PullRequest
0 голосов
/ 13 мая 2011

HI All,

Я пытаюсь сопоставить сегодняшнюю дату и время в Atalanta со значением базы данных.Я тестирую следующий код.

    $date = new DateTime();
    $newToday = $date->format('Y-m-d H:i:s');
    $dateTimeArr = split(" ",$newToday);
    $dateArr = split("-", $dateTimeArr[0]);
    $timeArr = split(":",$dateTimeArr[1]);

    $testTime = date("Y-m-d H:i",mktime($timeArr[0]+4, $timeArr[1], $timeArr[2], $dateArr[1], $dateArr[2], $dateArr[0])); // 4 is Daylight Saving Time offset

Когда я запускаю код, я обнаружил, что разница во времени составляет 1 час, если я проверяю время на http://www.timetemperature.com/tzga/atlanta.shtml

Я добавляюсмещение дневного света, которое составляет 4 часа, но все же время, которое я получаю, на 1 час больше, чем фактическое время.Почему эта разница видна?Как это исправить?

РЕДАКТИРОВАТЬ

Мой сервер находится в другом часовом поясе, чем Atalanta.Я хочу справиться с разницей во времени, не зная часовых поясов.Для этого для каждого города мы добавили смещение часового пояса в базе данных.

Ответы [ 2 ]

2 голосов
/ 13 мая 2011

Используйте объекты DateTime и DateTimeZone:

//EDT = Eastern Daylight Saving Time
$x = new DateTime(null, new DateTimeZone('EDT')); 
echo $x->format("Y-m-d H:i")

Я думаю, что если вы используете America/New_York (который находится в том же часовом поясе, что и Атланта) в качестве часового пояса, он соответственно изменится между обычным и летним временем.

$x = new DateTime(null, new DateTimeZone('America/New_York')); 
echo $x->format("Y-m-d H:i")

Обе версии выводят для меня одинаковое время.

0 голосов
/ 13 мая 2011

Вы проверили время вашего сервера (компьютер, который выполняет настоящий скрипт PHP)? Посмотрите, есть ли у него правильное время

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...