RU:Key:opening_hours
opening_hours |
Описание |
---|
Описывает, когда что-то открыто или закрыто (для этих данных существует особый стандартный формат). |
Группа: свойства |
Используется на элементах |
Смотри также |
Статус: де-факто |
Инструменты |
|
Ключ 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
записывается как и день недели. Поскольку он находится в приоритете по отношению к остальным правилам, он их "переписывает". Для получения дополнительной информации о том, какие правила имеют приоритет, смотрите более подробное руководство.
Обратите внимание, что если организация открыта в определённые дни недели независимо от того, являются ли они праздничными или нет, добавлять 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
)
- день недели: "wd 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
, orMo[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
).
Обратите внимание, что двоеточие не является обязательным, как указано в разделе 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=* используется не только для временных ограничений, но и для других типов ограничений, таких как длина, вес или погодные условия. Однако это сравнение наиболее часто используемого значения может быть показательным:
- В настоящее время opening_hours=sunrise-sunset используется немного в большем количестве объектов highway=* по сравнению с access:conditional=no @ (sunset-sunrise): 5.6k; ohsome против 5.4k; ohsome
Реализация
JavaScript
Реализация на JavaScript от пользователя Ypid:
- Инструмент для оценки evaluation tool
- Исходный код opening_hours.js
- Карта, показывающая opening_hours
- Скрипт Python для поиска с регулярным выражением и загрузки значений, которые не могут быть оценены в JOSM (документация в README).
- Соответствует формату спецификации первоначально созданной Netzwolf.
- На основе первоначального кодирования и дизайна, выполненного AMDmi3.
- Web to OSM Opening Hours — инструмент для копирования и вставки (почти) любого содержимого веб-сайта и получения прилично отформатированной строки opening_hours. Содействие приветствуются на OSM-de/WebToOSMOH GitHub!
Java
- OpeningHoursParser — библиотека парсера
- OpeningHoursEvaluator — определитель часов чаботы на основе предыдущего парсера
- OpeningHoursFragment — библиотека редактора часов чаботы на Android
- opening-hours-evaluator — библиотека для проверки opening_hours, открыты ли POI в определённое время (использует OpeningHoursParser для анализа)
Kotlin
- osm-opening-hours парсер (Multiplatform JVM, JS, native)
PHP
- PHP-код в SVN для парсинга opening_hours.
- Services_Openstreetmap, пакет PEAR PHP для работы с OpenStreetMap (OSM) API, поддерживает парсинг многих значений opening_hours, примеры здесь.
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
- opening-hours-rs библиотека с парсером и анализатором (смотрите opening-hours-syntax если вам нужен только парсер)
CarteApp
Carte.app использует этот ключ на выбранных пользователем POI, отображая зелёные, красные или белые точки в зависимости от того, попадает ли время в период открытия или закрытия, или если в POI не указано время, указанное в теге opening_hours=*.
OsmAnd
OsmAnd использует этот тег на экране поиска POI. Реализация только частичная, в настоящее время не поддерживаются даты, номера недель или праздники, но большинство значений должны быть проанализированы.
Часы работы для Ulm, Neu-Ulm и окрестностей
Веб-приложение доступно на сайте ulm-oeffnungszeiten.creal.de. График работы местности отображается на карте. Исходный код этого приложения под свободной лицензией и доступен через GitHub. Адаптировать приложение к другому городу очень просто и описано на странице GitHub.
Больше карт и приложений
- Hoursome для устройств iOS (прекращено)
- My Opening Hours для устройств Android
- osmapa.pl/osm24 — инструмент для парсинга opening_hours
- Cтатистика — визуализация качества данных и роста с течением времени
- YoHours, веб-сайт, чтобы определять часы работы, просто перетаскивая интервалы времени в календаре
- Vespucci, полнофункциональный редактор OSM для Android
- Web to OSM Opening Hours можно использовать для преобразования/извлечения текста часов работы в формат OSM с использованием обработки естественного языка
Программирование
- PHP-код в SVN для синтаксического анализа opening_hours.
- Пакет PEAR PHP для работы с OSM API, поддерживает синтаксический анализ широкого спектра синтаксиса часов работы — с примерами.
- OpeningHoursParser, написанный на Java.
- OpeningHoursFragment библиотека редактора Android OH.
Отображение на карте (рендеринг)
24/7 (круглосуточно) требует особого подхода, возможно, что-то вроде добавления "24" к значку объекта: .
Любые другие особые случаи гораздо менее очевидны.
Карты с указанием часов работы:
Ранее использующиеся теги, теперь устарели
Следующие (недокументированные) ключи устарели и их следует заменить на 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:*=*.
Смотрите также
- JOSM/Plugins/OpeningHoursEditor — графический редактор для тега opening_hours
- Соответствующие запросы Sophox:
Внешние ссылки
Онлайн-инструменты:
- Openingh.openstreetmap.de — инструмент для проверки и оценки тегов opening_hours
- YoHours — онлайн-редактор синтаксиса тегов
- Web to OSM Opening Hours — онлайн‑конвертер произвольного текста в синтаксис opening_hours
Библиотеки парсеров:
- goodudetheboy/OpeningHoursEvaluator GitHub — Java
- opening-hours/opening_hours.js GitHub — JavaScript/Node.js (понимает информацию о празднике)
- opening-hours/pyopening_hours GitHub — Python
- remi-dupre/opening-hours-rs GitHub — Rust
- rezemika/humanized_opening_hours GitHub — Python
- ubahnverleih/simple-opening-hours GitHub — JavaScript
- ujamii/osm-opening-hours GitHub — PHP
- westnordost/osm-opening-hours GitHub — Kotlin Multiplatform
Библиотеки валидаторов:
- rezemika/oh_sanitizer GitHub — Python
Библиотеки конвертеров:
- anct-cartographie-nationale/timetable-to-osm-opening-hours GitHub — TypeScript
Библиотеки редакторов:
- bryceco/OpeningHours GitHub — SwiftUI
- marvinschopf/react-hours GitHub — React
- simialbi/jquery-yohours GitHub — jQuery
- simonpoole/OpeningHoursFragment GitHub — Android
Ссылки
- ↑ 1.0 1.1 Праздники по умолчанию можно добавить в opening_hours.js. Существует альтернативная система для значений по умолчанию, которая в настоящее время не анализируется opening_hours.js (смотрите предложение Default для системы значений по умолчанию). Это предложение может устанавливать значения по умолчанию, такие как максимальная скорость для территорий (стран, областей и так далее), а также периоды праздников. Страна, зона может получить значения по умолчанию, такие как определения праздников.
- ↑ Installation problem Python 3.11.2 GitHub
- ↑ Have nice schedules GitHub