Как работает время в телефонах

Наверняка многие замечали проблемы с показаниями встроенных часов. Кто-то, возможно, замечал странности с отображением времени, относящегося к SMS. Особо заметно это бывает сразу после дней, когда во многих странах происходит переход на зимнее или летнее время.

Чтобы понять, как всё это работает, нужно будет немного закопаться в архитектуру. Давайте попробуем разобраться, почему могут возникать подобные проблемы, что влияет на показания времени, и что можно сделать в случае, если телефон вдруг начал показывать неправильное время.

Поясное время

Важно запомнить, что отличие значения поясного времени от «универсального» (UTC) (в повседневной жизни эквивалентного «гринвичскому» — GMT) является результатом чисто административных действий властей. Какую разницу для конкретной местности власти назначат, такой она и будет. Попытаемся сначала разобраться функциями обработки времени в сетевом оборудовании.

Время и SMS

В отправляемом с телефона текстовом сообщении (SMS-SUBMIT) место для информации о времени вообще не предусмотрено.

Только в момент поступления сообщения в SMS-центр оно приобретает поле отметки времени — TP-Service-Centre-Time-Stamp (TP-SCTS), состоящее из 7 октетов с переставленными местами полуоктетами (GSM 03.40, TS 23.040) и представляют информацию в двоично-десятичном коде (BCD), то есть каждый полуоктет кодирует одну цифру.

Первые 6 октетов представляют год, месяц, день, час, минуты и секунды местного времени отправителя. Седьмой октет содержит информацию о часовой зоне, и указывает отличие местного времени от UTC (GMT). Единицей измерения временного отличия служит 15 минутный интервал, а третий бит (старший в правом полуоктете) указывает алгебраический знак разницы («0» — положительная, «1» — отрицательная).
«Летнее время» должно учитываться в значении информации о часовой зоне. Например, в Великобритании значение октета часовой зоны равно 00000000b (UTC+00:00) в период зимнего времени, и 01000000b (4 х 15 минут, то есть UTC+01:00) в период летнего времени.

В структуре короткого сообщения, доставляемого на телефон получателя (SMS-DELIVER), информация о времени прибытия сообщения на SMS-центр уже присутствует, и может использоваться телефоном при отображении пользователю информации о сообщении.

Какую информацию о текущем времени сеть мобильной связи может сообщать телефону

В 1996 году в спецификациях GSM (GSM 02.42, 04.08 и др.), появились средства, позволяющие сотовым операторам доставлять на телефоны информацию о дате, времени и часовой зоне. Для этого в сигнальных сообщениях, предназначенных для управления мобильностью (Mobility Management), предусмотрены несколько информационных элементов, которые могут использоваться оператором по своему усмотрению, поскольку являются опциональными.

Прежде всего, это информационный элемент «Time Zone and Time» IE. Он содержит весь комплекс данных (год, месяц, день, час, минуты и секунды), указывающих момент, когда сеть передает сигнальное сообщение, а также значение, указывающее часовую зону, в которой расположена базовая станция.
Значения года, месяца, дня, часа, минут и секунд, как и в случае с SMS, передаются в кодировке BCD с перестановкой полуоктетов, но в отличие от метки времени SMS-центра, указывают универсальное время (UTC), а не местное!

Часть информационного элемента, указывающая часовую зону, передается в такой же кодировке, как и в случае временной отметки SMS-центра.

Вот как выглядит блок информации, переданный на телефон в конкретный момент времени:

Значение октета/его интерпретация
47 Код, означающий, что дальше идут 7 октетов IE «Time Zone and Time»
11 YEAR: 11
20 MONTH: 02
71 DAY: 17
70 HOUR: 07
71 MINUTE: 17
30 SECOND: 03
21 TIME ZONE: 12 = GMT+03:00
49 Код, означающий, что дальше идет IE «Daylight Saving Time»
01 Длина IE «Daylight Saving Time» = 1 октету
00 Значение, указывающее отсутствие сдвига из-за «летнего времени»

Поскольку в этом информационном элементе сеть передает значение «универсального времени» — UTC, для того, чтобы телефон мог отобразить местное время, он должен скорректировать UTC на значение, соответствующего сдвигу времени в часовом поясе, в котором находится телефон. В данном конкретном случае, дело происходило в Москве, еще до принятия закона «Об исчислении времени» и отмены перехода на зимнее время.

Таким образом, переданное сетью время соответствовало 10 часам 17 минутам и 3 секундам утра Московского времени 17 февраля 2011 года. Для сравнения, блок информации, переданный на телефон совсем недавно:

Значение октета/его интерпретация
47 Код, означающий, что дальше идут 7 октетов IE «Time Zone and Time»
21 YEAR: 12
40 MONTH: 04
81 DAY: 18
80 HOUR: 08
45 MINUTE: 54
44 SECOND: 44
61 TIME ZONE: 16 = GMT+04:00
49 Код, означающий, что дальше идет IE «Daylight Saving Time»
01 Длина IE «Daylight Saving Time» = 1 октету
00 Значение, указывающее отсутствие сдвига из-за «летнего времени»
Этот информация была передана в Москве в 12:54:44 18 апреля 2012 года.

Кроме информационного элемента «Time Zone and Time», спецификациями предусмотрен и отдельный 8-битовый информационный элемент, предназначенный для передачи информации только о часовой зоне («Time Zone» IE).

Информация в нем кодируется точно так же, как и значение часовой зоны в отметке SMS-центра.
Однако особого смысла передавать «Time Zone» вместе с «Time Zone and Time» не видно.

Предусмотрен и отдельный информационный элемент («Daylight Saving Time» IE), который, если он передается, указывает на значение сдвига времени, вызванного использованием «летнего времени», которое было учтено при вычислении значения поля часовой зоны.

Конкретное значение может указывать отсутствие сдвига («00b»), сдвиг на +1 час(«01b»), и сдвиг даже на +2 часа («10b»).

Согласно спецификациям GSM/3GPP информация о времени должна доставляться на мобильный телефон при первой же возможности, когда происходит регистрация телефона в сети, изменяется часовая зона, или выполняется переход на летнее или зимнее время.

Таким образом, с помощью описанных выше средств сеть может снабжать телефоны всей информацией, необходимой для правильной установки и индикации текущего времени, а также времени, связанного с короткими сообщениями.

Но, согласно положениям стандартов, использование этой информации предполагается исключительно по усмотрению производителя телефона.

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

Например, SMS-центр, обслуживающий несколько часовых зон, должен учитывать время в месте расположения телефона-отправителя. В противном случае, время отправки SMS будет фиксироваться с ошибкой, равной разнице времени в часовых зонах, где находится SMS-центр и телефон-отправитель. В зонах, расположенных вблизи границ часовых зон, оператор должен обеспечить, чтобы базовые станции передавали значение той часовой зоны, на территории которой расположены базовые станции. Конечно же, операторы учитывают эти особенности при планировании и настройке сети.

Тем не менее, из-за законов распространения радиоволн операторы не могут дать полной гарантии правильности информации о времени, доставленной на телефон. Ведь телефон, находящийся вблизи административной границы часовых зон, может принимать сигналы и использовать информацию о дате и времени от базовых станций, находящихся в соседней часовой зоне и передающих соответствующую информацию.

По этой же причине SMS-центр может неправильно определить часовую зону, где фактически находится телефон, если передача SMS произошла через базовую станцию, находящуюся в соседней часовой зоне.

Кроме того, потенциально возможны кратковременные проблемы из-за того, что программное обеспечение сетевого оборудования и SMS-центров автоматически выполнит переход на летнее/зимнее время вопреки новым российским реальностям, или было неверно настроено в момент ввода в эксплуатацию. Но такие «нюансы» обычно быстро исправляются обслуживающим персоналом.

Другие источники информации о времени и месте

Существуют и другие каналы доставки информации о дате, времени и месте пребывания в мобильные телефоны.

Многие телефоны обладают функциональностью навигаторов и могут использовать информацию о времени и местоположении из систем позиционирования (GPS, ГЛОНАСС и т. п.).

Телефоны (планшетники), подключенные к сети Интернет, могут использовать дополнительную информацию о времени с использованием NTP или SNTP, а также информацию о месте «привязки» публичных IP-адресов.
Наряду с ручными настройками времени и часовой зоны такое изобилие исходной информации в отдельных случаях может порождать для телефона проблемы с выбором – какую информацию о времени и местоположении использовать.

Как телефоны используют информацию о времени

В телефонах часы сначала появились в достаточно простой конфигурации – они просто показывали время на дисплее. В случае переезда или смены времени на летнее или зимнее, достаточно было просто перевести часы в соответствии с новыми реалиями.

Естественно, что возможности ручной установки параметров даты и времени в телефонах сохраняются и в настоящее время.

При ручной настройке пользователь сам вводит текущую дату, время и местоположение (часовой пояс) и сам несет ответственность за правильность введенной информации.

Казалось бы все просто и однозначно?
Но и в ручном варианте настройки могут возникать проблемы, если в программном обеспечении телефона установлено неверное соответствие часовой зоны и города, который указал пользователь в качестве своего местонахождения.

При использовании неверного значения для часовой зоны, впоследствии, при перемещении в другой город/страну и соответствующем изменении значения часовой зоны можно обнаружить, что время в телефоне отличается от реального административного времени в новом месте.

По мере увеличения производительности процессоров и емкости элементов памяти, в телефоны стали встраивать все более сложные функции, связанные со временем, датами и календарем.

И сейчас ситуация с автоматическим режимом настройки даты и времени выглядит существенно интереснее.
Если сеть мобильной связи GSM/UMTS, в которой зарегистрирован телефон, не передает информацию о текущей дате и времени, то телефон вроде бы должен отображать те данные, которые ввел пользователь в ручном режиме, несмотря на то, что установлен автоматический режим. Однако нельзя полностью исключать, что разработчики каких-то моделей могут воспользоваться информацией от систем позиционирования или из Интернет.

В случаях, когда оператор в сигнальном трафике передает информацию о дате, времени и часовой зоне, самым логичным выходом было бы использование именно этой информации – отображать местное время, вычисленное исходя из полученных от оператора значений UTC и сдвига часовой зоны.

Однако, на практике некоторые производители (их разработчики программного обеспечения) начали проявлять не всегда разумную инициативу в привлечении других источников информации. Например, было замечено, что в автоматическом режиме коррекции времени некоторые модели почему-то вместо информации о часовой зоне, переданной сетью, используют значение, установленное пользователем в ручном режиме настройки!

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

В таких случаях помочь может установка в ручном режиме значения часовой зоны, скорректированного в соответствии с указанным выше Федеральным законом.

Например, для Москвы можно установить не старое значение UTC+03:00, а UTC+04:00, не обращая внимания на название города (например, Баку, Ереван или Тбилиси).

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

Известны и проблемы у некоторых моделей с трактовкой времени отправки SMS. Телефон-получатель, принимает в SMS информацию о местном времени и часовой зоне, в которой находился телефон-отправитель с одной стороны, а также от сети значения UTC и часовой зоны в месте приема SMS.

Далее телефон-получатель может делать с этой информацией все, что задумано производителем, — то, как он будет обрабатывать всю эту информацию перед показом владельцу, стандарты отнесли исключительно к зоне ответственности производителя телефонов.

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

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

Источник: habrahabr. ru

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

This blog is kept spam free by WP-SpamFree.