B.4. Файлы конфигурации даты/времени#

B.4. Файлы конфигурации даты/времени

B.4. Файлы конфигурации даты/времени #

Поскольку сокращения часовых поясов не хорошо стандартизированы, Tantor BE предоставляет возможность настроить набор сокращений, принимаемых сервером. Параметр времени выполнения timezone_abbreviations определяет активный набор сокращений. Хотя этот параметр может быть изменен любым пользователем базы данных, возможные значения для него находятся под контролем администратора базы данных - на самом деле это имена файлов конфигурации, хранящихся в .../share/timezonesets/ установочного каталога. Добавляя или изменяя файлы в этом каталоге, администратор может установить локальную политику для сокращений часовых поясов.

timezone_abbreviations может быть установлено в любое имя файла, найденное в .../share/timezonesets/, если имя файла состоит только из букв. (Запрет на использование не-буквенных символов в timezone_abbreviations предотвращает чтение файлов вне заданного каталога, а также чтение резервных копий редактора и других ненужных файлов).

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

zone_abbreviation offset
zone_abbreviation offset D
zone_abbreviation time_zone_name
@INCLUDE file_name
@OVERRIDE

Зона zone_abbreviation - это просто сокращение, которое определяется. offset - это целое число, указывающее эквивалентное смещение в секундах от UTC, положительное значение означает восток от Гринвича, а отрицательное - запад. Например, -18000 будет означать пять часов западнее Гринвича, или стандартное время на восточном побережье Северной Америки. D указывает, что название зоны представляет локальное летнее время, а не стандартное время.

В качестве альтернативы можно указать time_zone_name, ссылающийся на имя зоны, определенной в базе данных часовых поясов IANA. Определение зоны проверяется, чтобы узнать, использовалось ли сокращение в этой зоне или использовалось ли ранее, и если да, то используется соответствующее значение - то есть значение, которое было актуальным на момент времени, для которого определяется значение отметки времени, или значение, использовавшееся непосредственно перед этим временем, если оно не было актуальным в то время, или самое старое значение, если оно использовалось только после этого времени. Это поведение является необходимым для работы с сокращениями, значение которых исторически менялось. Также допускается определение сокращения в терминах имени зоны, в которой это сокращение не появляется; в этом случае использование сокращения эквивалентно записи имени зоны.

Подсказка

Использование простого целочисленного offset предпочтительно, когда определяется сокращение, смещение относительно UTC которого никогда не менялось, так как такие сокращения обрабатываются гораздо быстрее, чем те, которые требуют обращения к определению часового пояса.

Синтаксис @INCLUDE позволяет включать другой файл из каталога .../share/timezonesets/. Включение может быть вложенным, но с ограниченной глубиной.

Синтаксис @OVERRIDE указывает, что последующие записи в файле могут переопределить предыдущие записи (обычно записи, полученные из включенных файлов). Без этого конфликтующие определения одного и того же сокращения часового пояса считаются ошибкой.

В исходной установке файл Default содержит все не конфликтующие сокращения часовых поясов для большей части мира. Дополнительные файлы Australia и India предоставляются для этих регионов: эти файлы сначала включают файл Default, а затем добавляют или изменяют сокращения по необходимости.

Для справки, стандартная установка также содержит файлы Africa.txt, America.txt и т. д., содержащие информацию о каждом известном сокращении часового пояса, используемого в соответствии с базой данных часовых поясов IANA. Определения имен зон, найденные в этих файлах, могут быть скопированы и вставлены в пользовательский конфигурационный файл по мере необходимости. Обратите внимание, что эти файлы не могут быть непосредственно ссылкой на настройки timezone_abbreviations, из-за точки, встроенной в их имена.

Примечание

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

Предостережение

Аббревиатуры часовых поясов, определенные в файле конфигурации, переопределяют не связанные с часовыми поясами значения, встроенные в Tantor BE. Например, в файле конфигурации Australia определена аббревиатура SAT (для Южно-Австралийского стандартного времени). Когда этот файл активен, SAT не будет распознан как аббревиатура для субботы.

Предостережение

Если вы изменяете файлы в .../share/timezonesets/, вам следует создать резервные копии — обычный дамп базы данных не будет включать этот каталог.