Как правильно обрабатывать преобразование часового пояса? - PullRequest
0 голосов
/ 18 марта 2011

ОК,

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

Сейчас мой сервер настроен на GMT. Когда я запускаю команду date в оболочке, я вижу, что это правильно на момент публикации.

Fri Mar 18 20:04:32 GMT 2011

Затем, когда я делаю hwclock - шоу дает мне, снова это было правильно.

Fri 18 Mar 2011 08:06:22 PM GMT

Теперь, когда я говорю php, чтобы изменить его часовой пояс на GMT-4 (так как это мой часовой пояс с учетом летнего времени)

date_default_timezone_set('Etc/GMT-4');
echo date("m/d/Y g:i:s A T");

Я получаю 19/03/2011 00:11:35 утра по Гринвичу-5. Совершенно неправильно, вместо того, чтобы забрать 5 часов, добавлено 5 часов.

Итак, я сделал это:

date_default_timezone_set('Etc/GMT+4');
echo date("m/d/Y g:i:s A T");

Я получил 18.03.2011 16:14:56 GMT + 4. Какое время правильное. MySQL делает то же самое. Похоже, что оба хотят инвертировать временные корректировки. Я что-то упустил в настройках?

1 Ответ

3 голосов
/ 18 марта 2011

Нет, я думаю, вы неправильно поняли нотацию / синтаксис.

Идея состоит в том, что вы устанавливаете +, если часовой пояс, который вы хотите получить, находится к западу от простого меридиана, и вы устанавливаете -, если он восточнее его. Так что на самом деле это не имеет никакого отношения к количеству часов, которые вы добавляете или убираете, скорее, чтобы вернуться к примеру, GMT + 4:

4 часа в странах к западу от Гринвича

Это, по сути, восточный край США, который на несколько часов отстает от нас в Англии ... размышления об этом должны иметь смысл.

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