Pull to refresh

GMTSlider — скользим между часовыми поясами

Self Promo
Многие из нас работают с зарубежными клиентами и часто приходится конвертировать время в разные часовые пояса: либо узнать текущее время в нескольких городах, либо смещение, например который час в Лондоне, Нью-Йорке и Токио, когда у нас 9 утра. Для таких игр со временем и предназначен gmtslider.
GMT Slider
При открытии страницы автоматически добавляется ваш часовой пояс, далее можно добавлять города или конкретные зоны. Тянем слайдер — видим время с учетом смещения. Когда вдоволь наигрались — можно вернуть ползунки в текущее время — для этого есть специальная кнопка.
На добавленные города/пояса можно сохранить ссылку, для это жмем на соответствующую кнопку и копируем ссылку, сохраняем в закладки, чтобы каждый раз не добавлять города, либо передаем её вашему заморскому коллеге, и он тоже будет знать вашу разницу во времени.

Из приятных плюшек — виджет, который можно повесить на свой сайт. Добавляем города, жмем «Get Widget», вставляем полученный код на страницу и наблюдаем, как скользит время уже на вашем сайте.

Как же в современном сайте обойтись без твиттера — если зафоловить @gmtslider, отправить личное сообщение с перечнем городов или зон, например «d gmtslider London, PST, GMT+10», получим текущее время: «London: 06:08 AM Mon, PST: 10:08 PM Sun, GMT+10: 03:08 PM Mon».

Если интересны технические детали — клиентская часть на основе jQuery, серверная — на Java под Google App Engine (включен платный аккаунт, вот и посмотрим как легко превысить бесплатные лимиты).
Total votes 11: ↑7 and ↓4 +3
Views 433
Comments 9

Зона недопонимания

PostgreSQL *
Translation
По некоторым причинам, само понятие «времени с часовым поясом» сбивает с толку многих пользователей и разработчиков приложений. Это влечет за собой появление огромного числа шероховатостей в случае когда приложения должны иметь дело с множеством часовых поясов. В конечном итоге разработчики пытаются оформить эту логику в виде специального кода внутри приложения, в результате чего неизбежно получают заслуженный геморрой с обработкой данных.

Вот некоторые распространенные ошибочные причины, которые я слышал, призывающие не использовать тип timestamp with time zone:

  • Я хочу хранить все в формате UTC;
  • Я не хочу получать несколько разных часовых поясов из запроса;
  • Мы используем специальную библиотеку для обработки часовых поясов;
  • Я не хочу тратить дисковое пространство для хранения часового пояса.


Все эти тезисы произрастают из фундаментального непонимания принципов хранения временных данных в базе данных.

Читать дальше →
Total votes 45: ↑40 and ↓5 +35
Views 35K
Comments 16

Изменение часовых зон в России, Белоруссии и на Украине

System administration *
Как вы, наверняка, уже слышали, осенью 2011 сразу несколько государств приняли решение об изменении порядка исчисления времени на своей территории, а также об отмене сезонного перехода на летнее время.
В списке этих государств: Россия, Белоруссия, Украина, частично признанные государства: Абхазия и Южная Осетия, а также непризнанное государство Приднестровье. Т.е. во всех часовых поясах этих стран теперь круглый год будет фиксированный сдвиг относительно UTC, без дополнительных сезонных сдвигов.
(Примечание: Украина сначала приняла решение о переходе на время UTC+3 без летнего времени, но потом отменила принятое ранее решение и пока вернулась к прежнему порядку исчисления времени с сезонными переводами часов. Подробности ниже.)

Server clockВ этой статье я опишу суть принятых изменений часовых поясов и опишу техническую сторону вопроса касательно IT-систем (корпоративной инфраструктуры, серверов, рабочих станций, сервисов, приложений и т.п.). Постараюсь ответить на ряд основных вопросов, возникающих в связи с этими изменениями:
— Какие IT-системы может затронуть изменение часовых поясов?
— Какие проблемы это может вызвать?
— Как подготовиться к этому, чтобы по возможности избежать проблем?

Полагаю, многим системным/прикладным администраторам, а также некоторым разработчикам приложений/сервисов, полезно будет ознакомиться с этим материалом. А потом предлагаю всем заинтересованным обсудить и дополнить эту информацию в комментариях.
Для начала немного общей информации...
Total votes 263: ↑254 and ↓9 +245
Views 38K
Comments 101

Tzdata — глобальная база знаний о часовых поясах

System administration *
Если нам где-либо (например, в каких-то приложениях) требуется работать не только с универсальным временем UTC, но и с местным временем в различных точках Земли, то здесь встаёт вопрос о необходимости некой базы знаний о том, как вычисляется локальное время относительно UTC в различных регионах мира.

Многие Unix-like системы для хранения информации обо всех мировых часовых поясах используют базу tzdata (она же tz database, она же zoneinfo database, она же Olson database — в честь Артура Олсона, основателя этой базы знаний).

Впервые начал собирать эту базу Артур Дэвид Олсон (Arthur David Olson), позже к этому проекту подключились и другие участники. Сейчас же основным коммитером новой информации в базу tzdata является Пол Эггерт (Paul Eggert), а Артур Олсон сейчас занимается разработкой и поддержкой утилит для работы с локальным временем и данными о часовых поясах (пакет tzcode).

В базе tzdata содержится детальная информация обо всех часовых поясах во всех регионах мира:
— координатная привязка основных населённых пунктов, характеризующих часовой пояс;
— смещение локального времени в различных регионах относительно универсального времени UTC;
— указано, в каких регионах применяется летнее время (DST), насколько оно смещается относительно стандартного, указаны точные даты и время переключения на летнее время и обратно в различных регионах в различные периоды;
— информация о високосных секундах (leap seconds).
Читать дальше →
Total votes 74: ↑67 and ↓7 +60
Views 36K
Comments 12

Смена временных зон в Mac OS X Snow Leopard

Development for MacOS *
Sandbox

Введение


В связи с отменой перехода на летнее/зимнее время посвящается.

В Mac OS X настройки часовых поясов находятся в двух местах: /etc/localtime и /usr/share/icu/icudtXXX.dat.
/etc/localtime, который является сиволической ссылкой на /usr/share/zoneinfo/[установленная time zone, например Europe/Moscow], задает настройки временных зон для консоли.
Системные часы, приложения Mail и прочие берут настройки тайм-зон из /usr/share/icu/icudtXXX.dat.

30 октября 2011г. у меня случилось следующее: в Terminal'е и различных консольных утилитах время правильное(localtime был заранее обновлен), а в Mail, системных часах и прочем отстает на час.

Решение проблемы


Читать дальше →
Total votes 18: ↑12 and ↓6 +6
Views 16K
Comments 13

Microsoft выпустила обновление для часовых поясов России

Development for Windows *
BUILTIN\Administrator, напоминаю, что 26 октября в России будет перевод часов. У тебя есть целый месяц на подготовку и тестирование, у Microsoft уже почти все готово
Также напоминаю, что это не просто перевод стрелок, а еще и введение новых часовых поясов и удаление старых. На некоторых системах тебе придется ручками, насколько ты сможешь их автоматизировать, изменить часовой пояс. Это следует начинать делать уже сейчас.
Читать дальше →
Total votes 18: ↑11 and ↓7 +4
Views 63K
Comments 20

GLPI и последние обновления временных зон в Windows

JavaScript *Development for Windows *
История одного подвига

Несколько недель назад GLPI ни с того, ни с сего стал зависать на загрузке страницы заявки. Жалоба поступила от моих сослуживцев, когда я находился в отпуске. Открыв страницу в браузере я не обнаружил проблемы, о чем уведомил своих коллег.

К сведению — у меня Firefox на Linux, а у них Chrome на Windows.

Они настаивали на проблеме. И я специально установил на свой нетбук зоопарк браузеров: Chrome, Opera (Blink, Presto). Проверил работу с GLPI в них — проблемы не обнаружил. Когда вышел на работу, проверил на рабочем компьютере под Windows и с удивлением обнаружил, что кроме Firefox, ни один из выше перечисленных браузеров не грузит страницу задачи. По совету одного из знакомых php программистов полез в код страницы и выяснил, что загрузка спотыкается о javascript устанавливающих дату создания заявки и дату выполнения. Памятуя о последних обновлениях Windows, связанных с изменениями часового пояса во Владивостоке, из-за которых у меня время раньше положенного срока перескочило на час назад, я попробовал поменять часовой пояс с Владивосток на Брисбен — проблема пропала.
Читать дальше →
Total votes 32: ↑21 and ↓11 +10
Views 12K
Comments 8

Java и время: часть первая

Website development *Programming *Java *Development for Linux *
Tutorial
Восемь лет назад я принимал участие в проектировании и разработке сервиса, который был должен обслуживать запросы пользователей со всех уголков земного шара и координировать их действия. Работая над проектом я понял, что очень часто многие важные аспекты работы со временем просто игнорируются. Иногда это действительно не очень критично: если сервис локален и им пользуются только на определенной территории, либо пользователи естественным образом разделены на почти не взаимодействующие между собой географические кластеры. Однако же, если сервис объединяет пользователей по всему миру, то без четкого понимания принципов работы со временем уже не обойтись. Представим сервис, в котором общие события (совещания например) начинаются в какое-то строго определенное время, а пользователи рассчитывают на это. Какое время им показывать, в какой момент их беспокоить уведомлениями, что такое день рождения и когда можно поздравить человека — в статье я попробую это осмыслить.



Статья не претендует на глубину и/или академичность. Это попытка систематизировать опыт и обратить внимание разработчиков на не очень очевидные аспекты.

Читать дальше →
Total votes 41: ↑41 and ↓0 +41
Views 218K
Comments 11

Java и время: часть вторая

Website development *Programming *Java *
Tutorial
Эта статья написана в продолжение к первой части и посвящена новому Date Time API, который был введен в Java 8. Я изначально хотел оформить эту тему отдельно, поскольку она достаточно большая и серьезная. Я еще сам не в полной мере начал использовать этот API в проектах, поэтому разбираться будем вместе по ходу. В принципе в переходе на новый API нет никакой срочной необходимости, более того многие еще и не начинали проекты на Java 8, а это означает, что время на освоение еще есть.

В статье я постараюсь не скатываться в банальный перевод штатной документации, больше я хотел бы сконцентрироваться на том, что мне показалось особенно важным.
Читать дальше →
Total votes 32: ↑30 and ↓2 +28
Views 199K
Comments 4