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

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

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

Поскольку сокращения часовых поясов недостаточно стандартизированы, в Tantor BE есть возможность настраивать набор сокращений, принимаемых при вводе даты и времени. Существует два источника таких сокращений:

  1. В качестве значения параметра времени выполнения TimeZone обычно используется имя записи из базы данных часовых поясов IANA. Если для этой зоны существуют широко используемые сокращения, они будут присутствовать в данных IANA, и Tantor BE будет в первую очередь распознавать эти сокращения согласно значениям, которые указаны в данных IANA. Например, если timezone установлен в America/New_York, то EST будет интерпретироваться как UTC-5, а EDT — как UTC-4. (Эти сокращения IANA также будут использоваться при выводе даты и времени, если для параметра DateStyle установлен формат, предпочитающий нечисловые сокращения часовых поясов.)

  2. Если сокращение не найдено в текущем часовом поясе IANA, он ищется в списке, указанном параметром времени выполнения timezone_abbreviations. Список timezone_abbreviations в первую очередь нужен для распознавания системой ввода даты и времени сокращений часовых поясов, отличных от текущего. (Эти сокращения не будут использоваться при выводе даты и времени.)

Хотя параметр 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/, вам следует создать резервные копии — обычный дамп базы данных не будет включать этот каталог.