RU:Key:opening_hours

From OpenStreetMap Wiki
Jump to navigation Jump to search
Public-images-osm logo.svg opening_hours
OpenClosed.png
Описание
Описывает, когда что-то открыто или закрыто (для этих данных существует особый стандартный формат). Изменить это описание на вики-странице. Изменить это описание в элементе данных.
Группа: свойства
Используется на элементах
точки можно отмечать этим тегомлинии можно отмечать этим тегомполигоны можно отмечать этим тегомотношения можно отмечать этим тегом
Смотри также
Статус: де-факто
Многие редакторы предлагают специальный интерфейс, позволяющий упростить редактирование этих данных, здесь задание в StreetComplete с редактированием данных о часах работы

Ключ opening_hours=* даёт возможность указать время работы практически всему, что имеет так называемые часы работы. Под временем работы понимается время обслуживания, доступности для клиентов. Например, opening_hours=Mo-Fr 08:00-17:00 указывает, что он открыт ежедневно с понедельника по пятницу, с 8:00 до 17:00. Могут быть указаны и гораздо более сложные случаи.

Key:opening_hours/specification — спецификация разметки.
Proposal:Time domains — исторический документ, в котором есть дополнительная информация об этом ключе.

Как отмечать на карте

Часы работы являются свойством, поэтому должны указываться на существующем объекте (например, shop=*, amenity=*, tourism=*). Можно ввести часы работы практически для всего, что имеет известные часы работы. Синтаксис довольно сложный, но он допускает даже некоторые очень сложные правила.

Для большинства картографов, вместо того чтобы пытаться редактировать значения тегов напрямую, лучше использовать специальные инструменты, такие как плагин OpeningHoursEditor в JOSM (может быть добавлено в меню плагина в настройках), встроенный специальный редактор в Vespucci, Go Map!!, OsmAnd, Every Door, выполняя задания на часы работы в StreetComplete либо использовать интернет-сервисы evaluation tool и YoHours.

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

Обратите внимание, что некоторые инструменты, такие как Organic Maps, имеют интерфейс с очень ограниченным представлением о синтаксисе часов работы и не будет работать с более сложными данными.

Теги, используемые в сочетании

  • check_date:opening_hours=* — дата последней проверки часов работы
  • source:opening_hours=* — источник информации (часы работы)
  • opening_hours:url=* — URL‑адрес, по которому текущие часы работы объекта можно посмотреть в интернете
  • website:*=* — пространство имён для различных интернет‑сайтов

Объяснение на примерах

Открыт по дням недели

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

Дни недели обозначаются двумя буквами следующим образом:

Аббр. День недели
Mo Понедельник
Tu Вторник
We Среда
Th Четверг
Fr Пятница
Sa Суббота
Su Воскресенье

Несколько интервалов открытия

opening_hours=Mo-Fr 08:00-12:00,13:00-17:30
То же, что и выше, но закрыто с 12:00 до 13:00 (на обед)

Добавьте два временных интервала, в которых они открыты, через запятую и без пробелов (,).

Несколько дней с одним и тем же периодом времени

opening_hours=Mo,We 08:00-12:00
Открыт по понедельникам и средам с 08:00 до 12:00

Добавьте дни недели через запятую и без пробелов (,).

Несколько дней с разными периодами времени

opening_hours=Mo-Fr 08:00-12:00,13:00-17:30; Sa 08:00-12:00
Также, как указано выше, также открыто в субботу утром

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

Закрыто по праздникам

opening_hours=Mo-Fr 08:00-12:00,13:00-17:30; Sa 08:00-12:00; PH off
То же, что и выше, но явно обозначено, что закрыто в праздничные дни
  • Используйте PH как будто это был будний день. Вместо временного диапазона используйте off чтобы сказать, что они закрыты весь день.
  • Используйте SH на школьные каникулы. Хотя это редко встречается, вы также можете использовать оба варианта (PH и SH) на одном объекте, например, opening_hours=Mo-Fr 08:00-12:00,13:00-17:30; Sa 08:00-12:00; PH off; SH off

Разные часы по праздникам

opening_hours=Mo-Fr 08:00-12:00,13:00-17:30; Sa 08:00-12:00; PH 09:00-12:00
В праздничные дни они открыты с 09:00 до 12:00.
  • Как и в примере выше, PH записывается как и день недели. Поскольку он находится в приоритете по отношению к остальным правилам, он их "переписывает". Для получения дополнительной информации о том, какие правила имеют приоритет, смотрите более подробное руководство.

Exclamation.svg Обратите внимание, что если организация открыта в определённые дни недели независимо от того, являются ли они праздничными или нет, добавлять PH не нужно.

  • Если в некоторые дни во время школьных каникул время работы объекта отличается, то можно использовать SH в качестве префикса для дней недели: opening_hours=Mo-Fr 08:00-12:00,13:00-17:30; Sa 08:00-12:00; SH Mo-Sa 09:00-12:00 (в этом примере объект открыт с понедельника по субботу с 9:00 до 12:00 во время школьных каникул, часы работы вне школьных каникул отличаются).

Закрытие после полуночи

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

opening_hours=Mo 20:00-26:00
Открывается в понедельник в 20:00, закрывается в 2:00 — с использованием расширенного синтаксиса часов
opening_hours=Mo 20:00-02:00
Открывается в понедельник в 20:00, закрывается в 2:00 — используя расширенное продление часов

Примечание: это может привести к ложному предупреждению в некоторых валидаторах.

opening_hours=Mo 20:00-24:00, Tu 00:00-02:00
Открывается в понедельник в 20:00, закрывается в 2:00 — с выделением фрагмента вторника отдельно

Внимание:

opening_hours=Mo 20:00-26:00; Tu 20:00-24:00
Открывается в понедельник и вторник в 20:00, закрывается в полночь(!)

Поскольку следующие правила приводят к игнорированию предыдущих, правило вторника перезаписывает блок вторника, открытый с 0:00 до 2:00 часов. Обязательно используйте запятую вместо точки с запятой, чтобы расширить правило! В общем, использование запятой почти всегда предпочтительнее.

Исключение в зависимости от месяца

Напомним, что следующие правила перезапишут предыдущие.

Чтобы обозначить n-й день недели каждого месяца:

opening_hours=Mo 08:00-16:00; Mo[2] 08:00-12:00
Открыт по понедельникам с 8:00 до 16:00, а во второй понедельник каждого месяца открыт с 8:00 до 12:00.

Чтобы обозначить n-й последний день недели каждого месяца:

opening_hours=Mo 08:00-16:00; Mo[-2] 08:00-12:00
Открыт по понедельникам с 8:00 до 16:00, а в предпоследний понедельник каждого месяца открыт с 8:00 до 12:00.

Чтобы обозначить целый месяц:

opening_hours=Mo 08:00-16:00; Dec off
Открыт по понедельникам с 8:00 до 16:00, но закрыт в декабре.

Месяц пишется с использованием первых трёх букв его английского названия (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)

Чтобы обозначить день месяца:

opening_hours=Mo-Fr 08:00-16:00; Dec 12 off
Открыт с понедельника по пятницу с 8:00 до 16:00, закрыт 12 декабря.

Месяцы можно совмещать с будними днями.

opening_hours=Mo 08:00-16:00; Dec Mo 08:00-12:00
Открыт по понедельникам с 8:00 до 16:00, а в декабре открыт по понедельникам с 8:00 до 12:00.

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

opening_hours=Mo 08:00-16:00; Jan-Mar Mo 08:00-12:00
Открыт по понедельникам с 8:00 до 16:00, а с января по март открыт по понедельникам с 8:00 до 12:00.

Значения тега

  • Чтобы указать проходимость линейных объектов линия смотрите access.

Примеры

  • 24/7
    Применяется к объектам, работающим круглосуточно, 7 дней в неделю, 24 часа в сутки.
    Обозначение на карте: иконка соответствующего объекта с изображением числа 24
    (примечание: по-видимому, существуют некоторые разногласия относительно того, включает ли 24/7 государственные праздники или нет, поэтому безопаснее отметить это явно, например, Mo-Su,PH 00:00-24:00 или Mo-Su 00:00-24:00; PH off).
  • Sa-Su 00:00-24:00
    Применяется к объектам, круглосуточно работающим в выходные.
  • Mo-Fr 08:30-20:00
    Применяется к объектам, работающим в рабочие дни с 8:30 до 20:00.
  • Mo-Fr 10:00-12:00,12:30-15:00
    Применяется к объектам, работающим в рабочие дни с 10:00 до 15:00 и имеющие обеденный перерыв с 12:00 до 12:30.
  • Mo 10:00-12:00,12:30-15:00; Tu-Fr 08:00-12:00,12:30-15:00; Sa 08:00-12:00
  • Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off
    Более сложный режим работы, включая разное время работы в зависимости от недели или месяца.
    Применяется к любым объектам с установленным режимом работы.
    Обозначение на карте: иконка соответствующего объекта, возможно с соответствующей подписью.
  • Mo-Sa 10:00-20:00; Tu off или Mo-Sa 10:00-20:00; Tu 10:00-14:00
    Такой способ применяется чтобы из общего диапазона исключить, например, день недели.
    Применяется к любым объектам с установленным режимом работы.
    Обозначение на карте: иконка соответствующего объекта, возможно с соответствующей подписью.
  • Mo-Sa 10:00-20:00; We[-1] off "санитарный день"
    Применяется к объектам, работающим с 10 до 20, кроме воскресенья, последняя среда месяца — санитарный день.
  • sunrise-sunset
    Применяется к объектам, работающим каждый день между восходом и заходом солнца.
  • (sunrise+02:00)-(sunset-02:00)
    Используйте круглые скобки, чтобы добавить временной сдвиг.
    Например: парк, который открывается через 2 часа после восхода солнца и закрывается за 2 часа до захода солнца
  • Su 10:00+
    Воскресенье с 10:00 до неизвестного или неуказанного времени закрытия.
    Применяется к: любым объектам с графиком работы (связанные теги)
    Обозначение на карте: ничего, информация анализируется программным обеспечением
  • Apr-Oct: Fr-Su 10:00-18:00
    Открыто с 10:00 до 18:00 с пятницы по воскресенье, но только с апреля по октябрь.
  • week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00
    Открыто с 09:00 до 12:00 по пятницам нечётных недель и средам чётных недель.
    Применяется к: любым объектам с графиком работы (связанные теги)
    Обозначение на карте: ничего, информация анализируется программным обеспечением
  • 10:30-19:00; Jan 01-31/2,Feb 01-29/2,Mar 01-31/2,Apr 01-30/2,May 01-31/2,Jun 01-30/2,Jul 01-31/2,Aug 01-31/2,Sep 01-30/2,Oct 01-31/2,Nov 01-30/2,Dec 01-31/2 07:30-13:30; Su 10:00-13:00; Sa off
    Открыто с 10:30 до 19:00 по чётным дням и с 7:30 до 13:30 по нечетным, но с 10:00 до 13:00 по воскресеньям и закрыт по субботам
  • Mo-Sa 08:00-13:00,14:00-17:00 || "by appointment"
    Здесь пригодится fallback rule. Это применимо в любом месте, которое не регулировалось предыдущими правилами.
  • Su-Tu 11:00-01:00, We-Th 11:00-03:00, Fr 11:00-06:00, Sa 11:00-07:00
    Из-за определения, что следующие правила будут перезаписывать предыдущие один раз, период времени после полуночи должен использовать дополнительные правила, которые разделяются запятой вместо точки с запятой.
  • Mo-Su,PH 15:00-03:00; easter -2 days off
    Каждый день, даже в праздничные дни, открыт, но закрыт в Страстну́ю пятницу.
  • Dec 11-Dec 17: Su 10:00-17:00
    Открыт в 3-й  Адвент (который не может состояться до 11-го или после 17-го декабря) с 10:00 до 17:00.

Дополнительные примеры смотрите в evaluation tool и документацию по opening_hours.js.

Синтаксис

  • wd день недели, возможные значения: Mo · Tu · We · Th · Fr · Sa · Su (например Fr 08:30-20:00 (например, Fr 08:30-20:00)
  • hh часы, всегда двузначное число в 24-часовом формате, в виде "hh:mm" · (например, Fr 08:30-20:00)
  • mm минуты, всегда двузначное число, в виде "hh:mm" (например, Fr 08:30-20:00)
  • mo месяц, возможные значения: Jan · Feb · Mar · Apr · May · Jun · Jul · Aug · Sep · Oct · Nov · Dec · "mo md" (например, Dec 25)
  • md день месяца, всегда двузначное число, в виде "mo md" (например, Dec 25)
  • Общий синтаксис: wd hh:mm-hh:mm (например, Fr 08:30-20:00)
  • Общий синтаксис: mo md hh:mm-hh:mm (например, Dec 25 08:30-20:00)

Правила

  • Диапазон часов включительно (всегда час открытия и час закрытия) разделены дефисом "-" · (например, 08:30-20:00)
  • Диапазон дней недели включительно, разделены дефисом "-" · (например, Mo-Fr)
  • Диапазон дней месяца включительно, разделены дефисом "-" · (например, Dec 20-26) или (например, Dec 20-Jan 06)
  • Исчерпывающий список дней, значения разделены запятой "," · (например, Mo,We,Fr)
  • Часы от минут разделены двоеточием ":" · (например, 08:30)
  • Список диапазонов часов, значения разделены запятой "," · (например, 8:30-14:00,16:30-20:00)
  • Разные диапазоны часов в разные дни разделяются точкой с запятой ";" (например, Mo 10:00-12:00,12:30-15:00; Tu-Fr 08:00-12:00,12:30-15:00; Sa 08:00-12:00)
подразумевается: "эти часы работы в этот день ; эти часы работы в этот день"
  • Исключаемые дни и диапазоны отмечаются словом "off", следующим за соответствующим днём или диапазоном
    • день недели: "wd off" (например, Tu off)
    • диапазон дней недели: "wd-wd off" (например, Tu-Th off)
    • месяц: "mo off" (например, Aug off)
    • диапазон месяцев "mo-mo off" (например, Aug-Sep off)
    • день месяца: "mo md off" (например, Dec 25 off)
    • диапазон дней месяца: "mo md-md off" (например, Dec 24-26 off) или "mo md — mo md off" (например, Dec 25-Jan 06 off)
  • Для исключения дней из диапазона дней с указанными часами работы сначала указывается диапазон дней с часами работы, а потом исключаемые дни: (например, Mo-Sa 10:00-20:00; Tu off ) или (например, Mo-Sa 10:00-20:00; Tu 10:00-14:00) (имеется в виду, что это не дополнительные дни, а дни, в которые часы работы отличаются от обычных, например Mo-Fr 08:00-12:30; We 14:00-17:00 означает что в среду магазин работает только во второй половине дня, а не дополнительно к первой половине)
  • Если необычные дни приходятся на начало или конец диапазона, не используйте правила исключения, а используйте обычные правила дополнения (например, Mo-Fr 10:00-20:00; Sa 10:00-14:00)


  • Если режим работы круглосуточный в определённые дни, используйте особый диапазон: 00:00-24:00
  • Если режим работы круглосуточный без выходных, используйте особое значение: 24/7
в этом случае рендерер может отобразить дополнительную иконку.

Синтаксис

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

Вы можете проверить своё составление с помощью инструмента для оценки evaluation tool или более простого приложения YoHours.

Легенда
code либо написан буквально как таковой (включая буквальный разделитель — пробел там, где это необходимо; в других местах синтаксиса пробелы используются только для его представления);
элемент должен быть заменён элементом, синтаксис которого определён в строке, начинающейся с элемент: ниже;
item… означает, что элемент можно повторять по мере необходимости.
[ последовательность элементов ] означает,  что последовательность элементов не является обязательной;
| указывает, что необходимо выбрать одну из последовательностей элементов (разделенных этим символом);
Общий синтаксис
opening_hours= наборы_правил [ ; наборы_правил ]…
Каждый набор правил оценивается по порядку, следующий набор правил, возможно, переопределяет начальное открытое или закрытое состояние, которое могло быть найдено в предыдущих наборах правил.
наборы_правил: правило [ || оправил ]…
Каждое правило обрабатывается по порядку до тех пор, пока оно не будет соответствовать указанным датам или времени, в противном случае следующее правило в наборе правил будет проверяться только в качестве запасного варианта.
правило: диапазон [ статус ] [ комментарий ]
диапазон: [ годы ] даты [   промежуток_времени ] | промежуток_времени | 24/7
Синтаксис для указания дополнительных лет
годы: диапазон_года [ , диапазон_года ]…
диапазон_года: год [ - год | + ] [ / n ]
Необязательный период в n лет может быть указан для лет, которые будут включены в указанный диапазон, начиная с первого указанного года.
год: четырёхзначное число года по григорианскому календарю.
Синтаксис для указания дат (с необязательным временем)
даты: ежемесячно | еженедельно | ежедневно | переменно | каникулы
ежемесячно: дни_месяца [   дни_недели ]
еженедельно: [ неделя   диапазон_недель [ , диапазон_недель ]…   ] диапазон_дней_недели [ , диапазон_дней_недели ]…
ежедневно: месяцы [   дни_месяца [ , дни_месяца ]… ]
переменно: изменяемая_дата [ - изменяемая_дата ]
месяцы: Mth [ -Mth ]
дни_месяца: dd [ -dd ]
диапазон_недель: ww [ - ww | + ] [ / n ]
Необязательный период в n недель может быть указан для недель, которые будут включены в указанный диапазон, начиная с первого указанного номера недели ww.
дни_недели: диапазон_дней_недели [ , диапазон_дней_недели ]… | Wd[ n [ , n ]… ]
Дни недели могут сопровождаться порядковыми номерами, считаться положительно с начала месяца или отрицательно с конца месяца:
Например Mo-Fr 08:00-09:00, or Mo[1,3] 08:00-09:00;
Например Su[1] означает первое воскресенье месяца, а Su[-1] означает последнее воскресенье месяца.
диапазон_дней_недели: Wd [ - Wd ]
ww: 2-значный номер недели (год по ISO) в диапазоне 01-53, например week 25 Mo 08:30-20:00
dd: 2-значный номер дня месяца в диапазоне 01-31, например Dec 25
Mth: Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec
Сокращенное трехбуквенное название месяца на английском языке, например Dec 25
Wd: Mo | Tu | We | Th | Fr | Sa | Su
Сокращенное название дня недели на английском языке, состоящее из двух букв, например Fr 08:30-20:00
ежегодный фестиваль: easter
На данный момент единственным переменным документированным ежегодным праздничным днем является Пасха (при условии, что это христианский григорианский календарь).
переменная дата: ежегодный фестиваль [ знак n days ], например easter -2 days 08:00-17:00 для указания часов работы в Страстну́ю пятницу, или easter +49 days 08:00-17:00 для часов работы на  День Святой Троицы.
holidays: PH | SH
Государственный праздник (зависит от местоположения, требуются данные по стране/региону); scholar holiday (location dependent, requires data per scholar academy).
Синтаксис для указания времени
промежуток_времени: диапазон_времени [ , диапазон_времени ]…
диапазон_времени: время [ - время | + ]
Это может использоваться вместо слов «допоздна» или «до последнего покупателя», например12:00+.
время: точное_время | переменное_время
точное_время: HH : mm
переменное_время: событие | ( событие время_смещения )
событие: dawn | sunrise | sunset | dusk
Обратите внимание, что время заката и восхода солнца требует геолокации для вычисления положения углового возвышения солнца и углового возвышения наблюдаемого горизонта (которое также зависит от высоты). Они могут быть аппроксимированы на уровне моря на моделирующем геоиде или просто приблизительно рассчитаны по местному времени (для страны и часового пояса).
время_смещения: знак hh : mm
hh: Относительное 2-значное число часов в диапазоне 00-48, например (sunrise+01:00)-12:00.
HH: Абсолютное 2-значное число часов (в день, в 24-часовом формате, без утра / вечера) в диапазоне 00-23, например Fr 08:30-20:00.
mm: 2-значное число минут (в часах) в диапазоне 00-59, например Fr 08:30-20:00.
Другие общие синтаксические элементы, используемые для настройки даты и времени
знак: + | -
n: Положительное целое число.
Синтаксис необязательных модификаторов
статус: unknown | open | closed | off
unknown: начальное открытое или закрытое состояние, за исключением последующих дат и времени отмены (также может использоваться для отмены предыдущего явного открытого или закрытого состояния);
open: открываться в указанные даты и время (или постоянно, если время не указано), за исключением следующих дат и времени;
closed или off: закрыты в указанные даты и время (или постоянно, если время не указано), за исключением следующих дат и времени;
В каждом правиле первого набора правил значения тега (включая резервные), если статус явно не указан в указанном диапазоне, предполагается, что он подразумевается как open, оставляя все другие неопределенные даты и время как unknown; итоговое расписание затем последовательно модифицируется каждым последующим набором_правил.
комментарий: "текст"
Короткий комментарий (заключённый в кавычки ", но не содержащий внутри текста других кавычек ") показывающий применимые ограничения или спецификации, например "только дети", "ограниченное обслуживание", или "бронирование по телефону", reservation=*.
Этот комментарий предназначен для отображения в приложениях, а не для автоматической интерпретации. Язык, используемый в этом комментарии, не определяется самим значением тега, но он может быть указан (для целей локализации) тегами, ключ которых содержит суффикс кода языка.

Синтаксис

  • wd день_недели, возможные значения: Mo · Tu · We · Th · Fr · Sa · Su (например Fr 08:30-20:00)
  • hh час, всегда двухзначный номер в 24-часовом формате (без am/pm), в формате "hh:mm" · (например Fr 08:30-20:00)
  • mm минута, всегда двухзначное число в формате "hh:mm" (например Fr 08:30-20:00)
  • mo месяц, возможные значения: Jan · Feb · Mar · Apr · May · Jun · Jul · Aug · Sep · Oct · Nov · Dec · "mo md" (например Dec 25)
  • md день месяца, всегда двухзначное число в формате · "mo md" (например Dec 25)
  • we номер недели, всегда двузначное число в диапазоне 01-53, в формате "week we" (например week 25 Mo 08:30-20:00)
  • SH Школьные каникулы, может использоваться для обозначения разных часов работы во время школьных каникул (например Mo-Fr 08:00-09:00,14:00-15:00; SH off)[1]
  • PH Государственный выходной (праздник), может использоваться для обозначения разных часов работы в праздничные дни. (например Mo-Fr 09:00-17:00; PH 10:00-12:00; PH Su off)[1]
Приведенный выше пример означает, что обычные часы работы — с понедельника по пятницу с 9:00 до 17:00, кроме государственных выходных с 10:00 до 12:00, кроме государственных праздников, приходящихся на воскресенье.

Общий синтаксис значения может быть:

  • hh:mm-hh:mm (например 08:30-20:00).
  • wd hh:mm-hh:mm (например Fr 08:30-20:00).
  • mo md: hh:mm-hh:mm (например Dec 25: 08:30-20:00).
  • mo-mo: wd hh:mm-hh:mm (например Jun-Aug: Su 10:30-16:00 для указания времени работы по воскресеньям в июне, июле и августе).
  • week we: wd hh:mm-hh:mm (например week 25: Mo 08:30-20:00).

Exclamation.svg Обратите внимание, что двоеточие не является обязательным, как указано в разделе opening_hours/specification.

Правила

  • Последовательные часы [всегда нужно указать время открытия-закрытия] разделённых дефисом "-" · (например 08:30-20:00)
  • Рабочие дни подряд открываются разделённые "-" · (например Mo-Fr)
  • Последовательные дни месяца, разделённые "-" · (например Dec 20-26) or (например Dec 20-Jan 06)
  • Открыто с периодичностью "n" в пределах диапазона последовательных дней месяца, за диапазоном следует "/n" (например 02-30/n)
  • Номера недель, разделённые "-" · (например week 01-26)
  • Открыто с периодичностью "n" в течение нескольких недель подряд, за диапазоном следует "/n" (например week 02-52/n)
  • Несколько дней недели, разделённых "," · (например Mo,We,Fr)
  • Несколько диапазонов времени, разделённых "," · (например 08:30-14:00,16:30-20:00)
  • Разные часы в разные дни разделены ";" (например Mo 10:00-12:00,12:30-15:00; Tu-Fr 08:00-12:00,12:30-15:00; Sa 08:00-12:00)
читается как: часы работы в эти дни; часы работы в эти дни
  • Выходной вторник день будет отмечен как (например Tu off)
  • Диапазон выходных дней недели будет отмечен как "wd-wd off" (например Tu-Th off)
  • Нерабочий месяц будет отмечен как "mo off" (например Aug off)
  • Диапазон нерабочих месяцев будет отмечен как "mo-mo off" (например Aug-Sep off)
  • Выходной день месяца будет отмечен как "mo md off" (например Dec 25 off)
  • Диапазон выходных дней месяца будет отмечен как "mo md-md off" (например Dec 24-26 off) или "mo md - mo md off" (например Dec 25-Jan 06 off)
  • Исключения для диапазона дней: сначала диапазон, затем исключение (например Mo-Sa 10:00-20:00; Tu off) или (например Mo-Sa 10:00-20:00; Tu 10:00-14:00) или (например Mo-Fr 08:00-12:30; We 14:00-17:00)
Это означает, что это не дополнения, например, например Mo-Fr 08:00-12:30; We 14:00-17:00 означает, что по средам магазин открыт только во второй половине дня, а не дополнительно.
  • Если это первый или последний день диапазона, не используйте правило исключения, используйте обычное (например Mo-Fr 10:00-20:00; Sa 10:00-14:00)
  • Дни недели, не идущие подряд или не следующие друг за другом, будут помечены как wd[x] (например Su[3] 09:00-12:00)
    • Эта строка используется для обозначения третьего воскресенья месяца с 9:00 до 12:00.
    • Напишите -1, чтобы указать последний день месяца, например Aug Th[-1] означает последний четверг августа.
    • Можно использовать группировку, например Su[1,3,5] и Su[1-3]
  • Если часы работы заведения открыты весь день в определённые дни, то указывайте, например 00:00-24:00
  • Если это 24 часа 7 дней в неделю, то в этой случае есть конкретное значение: 24/7.
    • Такое значение тега может отображать определенный значок в некоторых картах.
  • Специальное значение времени для обозначения времени восхода солнца: sunrise.
  • Специальное значение времени для обозначения времени заката солнца: sunset.
  • Плюс + после времени означает "от" или "открытое конечное время" (например Sa 22:00+ or Sa 18:00-22:00+)

Смотрите спецификацию для дополнительной информации.

Распространённые ошибки

Неправильно стоп Правильно галочка Примечание информационное предупреждение
7/8-23 Mo-Su 08:00-23:00
0600-1800 06:00-18:00
07;00-2;00pm 07:00-14:00
08.00-16.00, public room till 03.00 a.m 08:00-16:00 open, 16:00-03:00 open "public room"
09:00-21:00 TEL/072(360)3200 09:00-21:00 "call us" Добавьте тег contact:phone=*
10:00 - 13:30 / 17:00 - 20:30 10:00-13:30,17:00-20:30
April-September; Mo-Fr 09:00-13:00, 14:00-18:00, Sa 10:00-13:00 Apr-Sep: Mo-Fr 09:00-13:00,14:00-18:00; Apr-Sep: Sa 10:00-13:00
Dining in: 6am to 11pm; Drive thru: 24/7 06:00-23:00 open "Dining in" || 00:00-24:00 open "Drive-through"
или
opening_hours=06:00-23:00
opening_hours:drive_through=00:00-24:00
Преимущество использования двух тегов в том, что они могут быть поняты программным обеспечением (например, для предупреждения пользователя о том, что по прибытии будет открыт только для сквозного проезда).
MWThF: 1200-1800; SaSu: 1200-1700 Mo,We,Th,Fr 12:00-18:00; Sa-Su 12:00-17:00
BAR: Su-Mo 18:00-02:00; Tu-Th 18:00-03:00; Fr-Sa 18:00-04:00; CLUB: Tu-Th 20:00-03:00; Fr-Sa 20:00-04:00 Tu-Th 20:00-03:00 open "Club and bar"; Fr-Sa 20:00-04:00 open "Club and bar" || Su-Mo 18:00-02:00 open "bar" || Tu-Th 18:00-03:00 open "bar" || Fr-Sa 18:00-04:00 open "bar"
Su-Th 11:00-03:00; Fr-Sa 11:00-05:00 Su-Th 11:00-03:00, Fr-Sa 11:00-05:00 Смотрите последний пример
Mo-We 17:00-01:00; Th,Fr 15:00-01:00; PH,Sa,Su off Mo-We 17:00-01:00, Th,Fr 15:00-01:00; PH off Используйте дополнительные правила. Вы не можете написать "Sa,Su off", потому что в этом случае время "Sa 00:00-01:00" будет закрыто.

Негрегорианские календари

Было некоторое обсуждение того, как отображать не григорианские календари (“Opening hours syntax for non Gregorian calendar”. 17 Мая 2019. ).

Использование на автомобильных дорогах

Хотя ограничения, основанные на времени, также отмечают тегом access:conditional=*, картографы также предпочитают (также добавляют) тег opening_hours=* на дороги highway=*, поскольку эта схема (обычно использующая положительные значения вместо отрицательных) имеет множество преимуществ перед access:conditional=* в случаях, когда элемент закрыт для всех видов транспорта в некоторые определённые моменты:

  • нет необходимости повторять отдельные теги для всех помеченных видов транспорта (foot:conditional=* + bicycle:conditional=* + horse:conditional=* + …, которые необходимы, поскольку специфичный для конкретного вида транспорта foot=yes заменяет общий тег access:conditional=no @ ..)
  • упрощённая установка тегов с положительными значениями для обычных часов работы (например, Mo-Fr 07:00-19:00; Sa-Su 10:00-17:00; отрицательные значения в access:conditional=* могут привести к неожиданным результатам в случаях с разными режимами в разные дни в день смены режима и в зависимости от закрытие проходит после полуночи
  • проще чётко указать, что было установлено, что дорога действительно открыта все дни и все часы (opening_hours=24/7) для случаев, когда это не требует пояснений, например, для троп в природных зонах, многие из которых закрыты после захода солнца или в зависимости от сезона (многие тропы без обозначения доступа по условию в OSM на самом деле закрыты в определённое время)
  • проще указать в одном теге, что элемент действительно закрыт для всех видов транспорта (с тегом access:conditional=* необходимо вычислять условия для всех различных видов транспорта)
  • больше поддержки для проверки / валидации результатов синтаксиса (пример)
  • расширена поддержка визуализации текущего состояния (открыто/закрыто); пример  

Текущее использование opening_hours=* на дорогах

Более точное сравнение использования на highway=* требует дальнейшего анализа, поскольку access:conditional=* используется не только для временных ограничений, но и для других типов ограничений, таких как длина, вес или погодные условия. Однако это сравнение наиболее часто используемого значения может быть показательным:

Реализация

JavaScript

Реализация на JavaScript от пользователя Ypid:

Java

  • OpeningHoursParser — библиотека парсера
  • OpeningHoursEvaluator — определитель часов чаботы на основе предыдущего парсера
  • OpeningHoursFragment — библиотека редактора часов чаботы на Android
  • opening-hours-evaluator — библиотека для проверки opening_hours, открыты ли POI в определённое время (использует OpeningHoursParser для анализа)

Kotlin

PHP

Python

  • KOpeningHours Парсер и валидатор
  • pyopening_hours Обёртка для реализации JavaScript (не поддерживается, с 2024 года не работает[2])
  • osm-opening-hours (неполный, неподдерживаемый, на нескольких языках[3], не поддерживается)
  • oh_sanitizer Корректор неправильного синтаксиса
  • humanized_opening_hours Переводчик текстовых описаний (не поддерживается)
  • opening-hours-py обвязка парсера и анализатора от Rust crate

C++/Qt

  • KOpeningHours Анализ и оценка (статус в определенное время, итерация по интервалам)

Rust

CarteApp

Carte.app использует этот ключ на выбранных пользователем POI, отображая зелёные, красные или белые точки в зависимости от того, попадает ли время в период открытия или закрытия, или если в POI не указано время, указанное в теге opening_hours=*.

OsmAnd

OsmAnd 2.0 показывает, является ли POI открытым или закрытым на основе тегов opening_hours. Например, магазин велосипедов Re-CYCLE был закрыт, когда был сделан снимок экрана; однако различные пункты проката велосипедов открыты.

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

Часы работы для Ulm, Neu-Ulm и окрестностей

Ulm, Neu-Ulm и окрестности.

Веб-приложение доступно на сайте ulm-oeffnungszeiten.creal.de. График работы местности отображается на карте. Исходный код этого приложения под свободной лицензией и доступен через GitHub. Адаптировать приложение к другому городу очень просто и описано на странице GitHub.

Больше карт и приложений

Программирование

Отображение на карте (рендеринг)

24/7 (круглосуточно) требует особого подхода, возможно, что-то вроде добавления "24" к значку объекта: Pharmacy dispencing 24.png.

Любые другие особые случаи гораздо менее очевидны.

Карты с указанием часов работы:

Ранее использующиеся теги, теперь устарели

Следующие (недокументированные) ключи устарели и их следует заменить на opening_hours=*. Их значение должно интерпретироваться для установки значения нового ключа, как описано выше:

Если вы знаете места с этим тегом, проверьте, не надо ли пометить их по-другому.
Автоматические правки крайне нежелательны, если вы не осознаёте всю сложность и опасность этого процесса!
Если вы знаете места с этим тегом, проверьте, не надо ли пометить их по-другому.
Автоматические правки крайне нежелательны, если вы не осознаёте всю сложность и опасность этого процесса!
Если вы знаете места с этим тегом, проверьте, не надо ли пометить их по-другому.
Автоматические правки крайне нежелательны, если вы не осознаёте всю сложность и опасность этого процесса!
Если вы знаете места с этим тегом, проверьте, не надо ли пометить их по-другому.
Автоматические правки крайне нежелательны, если вы не осознаёте всю сложность и опасность этого процесса!

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

Программы

  • PHP-код для вычисления статуса объекта (открыт/закрыт) по времени и указанному диапазону
  • javascript библиотека для вычисления как статуса объекта в любое время, так и времени его следующего изменения
  • Онлайн визуальное отображение времени

Примечания и распространённые ошибки

Примеры сложных случаев и ошибок смотрите в примерах выше.

Не используйте ключевое слово call us (предназначенное для обозначения того, что время работы можно узнать, позвонив им) для обозначения того, что требуется предварительное резервирование мест, запись на прием и другие действия, которые прямо не связаны с временем работы. Используйте для этого reservation=*.

Связанные теги

opening_hours:signed=no — часы работы не указаны на табличке, видимой снаружи

Следующие ключи используют один и тот же синтаксис для разных целей:

  • opening_hours:*=* — пространство имён для различных временных периодов:
    • opening_hours:atm — время, когда банкомат внутри места размещения можно использовать
    • opening_hours:covid19 — часы работы во время пандемии коронавируса
    • opening_hours:drive_through — часы работы обслуживания в машине в ресторане быстрого питания, банке или другом заведении открыт
    • opening_hours:kitchen — время, когда кухня открыта и питание можно заказать (например, в ресторане или пабе)
    • opening_hours:lifeguard — время, когда спасатель обеспечивает безопасность места у воды (если часы работы отличаются от основных)
    • opening_hours:office — часы работы офиса, если отличается от основного времени работы
    • opening_hours:pharmacy — часы работы аптеки, если отличается от основного времени работы
    • opening_hours:reception — часы работы ресепшна (стойки регистрации)
    • opening_hours:store — часы работы магазина, если отличается от основного времени работы
    • opening_hours:workshop — часы работы мастерской при магазине
  • collection_times — время сбора почты из почтовых ящиков
  • service_times — для церквей и других объектов, которые имеют разное время обслуживания, чем часы работы
  • breakfast=* — если и когда подаётся завтрак
  • lunch=* — если и когда подаётся обед
    • lunch:buffet=* — когда подаётся обеденное меню
    • lunch:menu=* — когда подается обед по системе "шведский стол"
  • dinner=* — если и когда подаётся ужин
  • happy_hours — время, когда алкогольные напитки предлагаются со скидкой
  • lunch — время, когда массовый приготовленный регулярный ежедневный обед предлагается со скидкой
  • access — ограничения по времени
  • lit — искусственное освещение
  • smoking_hours — время, когда курение разрешается в помещении

Conditional restrictions — используйте синтаксис opening_hours также повторно используйте синтаксис часов работы, чтобы указать условия, основанные на дате и времени

Если место закрыто навсегда, то удаляйте такой объект, если он полностью закрыт без риска повторного обозначения на карте. Если что‑то осталось, вы можете использовать тег с префиксом жизненного цикла, например disused:*=* или abandoned:*=*.

Смотрите также

Внешние ссылки

Онлайн-инструменты:

  • Openingh.openstreetmap.de — инструмент для проверки и оценки тегов opening_hours
  • YoHours — онлайн-редактор синтаксиса тегов
  • Web to OSM Opening Hours — онлайн‑конвертер произвольного текста в синтаксис opening_hours

Библиотеки парсеров:

Библиотеки валидаторов:

Библиотеки конвертеров:

Библиотеки редакторов:

Ссылки

  1. 1.0 1.1 Праздники по умолчанию можно добавить в opening_hours.js. Существует альтернативная система для значений по умолчанию, которая в настоящее время не анализируется opening_hours.js (смотрите предложение Default для системы значений по умолчанию). Это предложение может устанавливать значения по умолчанию, такие как максимальная скорость для территорий (стран, областей и так далее), а также периоды праздников. Страна, зона может получить значения по умолчанию, такие как определения праздников.
  2. Installation problem Python 3.11.2 GitHub
  3. Have nice schedules GitHub