User:Broiledpeas/Sandbox2

From OpenStreetMap Wiki
Jump to navigation Jump to search
opening_hours
Description
Describe cuándo algo está abierto o cerrado en un formato estándar. Edit this description in the wiki page. Edit this description in the data item.
Group: properties
Used on these elements
may be used on nodesmay be used on waysmay be used on areas (and multipolygon relations)may be used on relations
Documented values: 2
See also
Status: approvedPage for proposal
Muchos editores ofrecen una interfaz especial que permite una edición más sencilla de estos datos; este, StreetComplete búsqueda se muestra con la edición de los datos de horarios de apertura en curso.

opening_hours=* describe cuándo una característica está abierta o cerrada en un formato estándar. Por ejemplo, opening_hours=Mo-Fr 08:00-17:00 especifica estar abierto todos los días de lunes a viernes, de 8:00 a 17:00. También se pueden registrar casos mucho más complejos.

Key:opening_hours/specification es una especificación formal. Proposed features/Time domains es un documento histórico con algo más de trasfondo.

How to map

Opening hours are an attribute, so must go with an existing object; e.g., shop=*, amenity=*, tourism=*. It is possible to enter opening hours for almost everything that has known hours of operation. The syntax is quite complex, but it allows even some highly complicated rules.

For most mappers, rather than attempting to edit tag values directly, it is better to make use of special tools like the OpeningHoursEditor plugin in JOSM (can be added in plugin menu in preferences), built-in special editor in Vespucci, Go Map!!, OsmAnd, Every Door, StreetComplete opening hours quest, or evaluation tool and YoHours web tools.

This tools allow to use more friendly GUI to construct opening hours text that will go into tag.

Note that some tools like Organic Maps have interface that has a very limited understanding of opening hours syntax and will fail with more complex data.

Tags used in combination

Explanation by example

Open on weekdays

Image demonstrating to use a hyphen to separate the first and last weekday in the range, a space between the day range and the time interval, and noting that a leading zero is mandatory.

Weekdays are abbreviated to 2 letters as follows:

Abbr. Day of week
Mo Monday
Tu Tuesday
We Wednesday
Th Thursday
Fr Friday
Sa Saturday
Su Sunday

Multiple opening intervals

User:Broiledpeas/Sandbox2/Tutorial/Example

Add the two time intervals in which they are open, separated by a comma without spaces (,).

Multiple days same time periods

User:Broiledpeas/Sandbox2/Tutorial/Example

Add days separated by a comma without spaces (,).

Multiple days and multiple time periods

User:Broiledpeas/Sandbox2/Tutorial/Example

Add the opening hours for each day range, separated by a semicolon with following space (; ).

Closed on holidays

User:Broiledpeas/Sandbox2/Tutorial/Example

  • Use PH as if it were a weekday. Instead of hours, use off to say they're closed all day.
  • Use SH for school holidays. Although this is rare, you can also use both PH and SH on the same object; e.g. opening_hours=Mo-Fr 08:00-12:00,13:00-17:30; Sa 08:00-12:00; PH off; SH off

Different hours on holidays

User:Broiledpeas/Sandbox2/Tutorial/Example

As said before, PH is just like a weekday. Because it is to the right of the rest of the rules, it overwrites them. For more information on which rules take precedence, see this more elaborate guide.

If a feature has different opening hours on some days during the school holidays, SH can be used as a prefix to the weekdays: opening_hours=Mo-Fr 08:00-12:00,13:00-17:30; Sa 08:00-12:00; SH Mo-Sa 09:00-12:00 (The feature in this example is open Monday to Saturday 9am to 12pm during the school holidays, but has different opening hours out of the school holidays.)

Closing after midnight

In some cases places are closing after midnight. For example place opening on Monday at 20:00 and closing after midnight, at 2:00 can be marked in following ways - which are all valid, according to specification:

User:Broiledpeas/Sandbox2/Tutorial/Example

User:Broiledpeas/Sandbox2/Tutorial/Example Note: This might yield a spurious warning in some validators.

User:Broiledpeas/Sandbox2/Tutorial/Example

Caution: User:Broiledpeas/Sandbox2/Tutorial/Example

Because following rules cause previous ones to be ignored, Tuesday rule overwrites the Tuesday open from 0:00 to 2:00 o'clock chunk. Make sure to use a comma instead of a semicolon to extend the rule! In general, using comma is almost always preferable.

Exception based on month

Recall that following rules will overwrite previous ones.

To describe in every month, the nth occurrence of a weekday:User:Broiledpeas/Sandbox2/Tutorial/ExampleTo describe, in every month, the nth to last occurrence of a weekday:User:Broiledpeas/Sandbox2/Tutorial/ExampleTo describe every day of a month:User:Broiledpeas/Sandbox2/Tutorial/ExampleMonths are abbreviated to the first three letters of their name: Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec.

To describe a day of a month:User:Broiledpeas/Sandbox2/Tutorial/ExampleMonths can be combined with weekdays.User:Broiledpeas/Sandbox2/Tutorial/ExampleMonths can also be combined, or spanned, similarly to weekdays.User:Broiledpeas/Sandbox2/Tutorial/Example

Values

For way traversable ways, see Key:access.

Examples

  • 24/7
    Applied to: any non-stop facilities (related tags), 24 hours a day, 7 days a week
    Render on map: something like object icon with a 24
    (note: there seems to be some disagreement whether "24/7" includes public holidays or not, so it is safer to mark it explicitly e.g. "Mo-Su,PH 00:00-24:00" or "Mo-Su 00:00-24:00; PH off" instead)
  • Sa-Su 00:00-24:00
    Applied to: opens only the weekend but non-stop, 24 hour
  • Mo-Fr 08:30-20:00 or for more complex opening hours:
    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
    Applied to: any facilities with opening hours (related tags)
    Render on map: nothing, information recovered by software
  • Mo-Sa 10:00-20:00; Tu off or Mo-Sa 10:00-20:00; Tu 10:00-14:00
    For exceptions in a range of days
    Applied to: any facilities with opening hours (related tags)
    Render on map: nothing, information recovered by software
  • sunrise-sunset
    Applied to: opens every day between sunrise and sunset.
    Use round brackets to add a time offset, for example a park that opens 2 hours after sunrise and closes 2 hours before sunset (sunrise+02:00)-(sunset-02:00)
  • Su 10:00+
    Sunday from 10:00 to an unknown or unspecified closing time.
    Applied to: any facilities with opening hours (related tags)
    Render on map: nothing, information recovered by software
  • Apr-Oct: Fr-Su 10:00-18:00
    Open from 10:00 to 18:00 from Friday to Sunday, but only between April and October.
  • week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00
    Open from 09:00 to 12:00 on Fridays of odd weeks and on the Wednesdays of even weeks
    Applied to: any facilities with opening hours (related tags)
    Render on map: nothing, information recovered by software
  • 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
    Open from 10:30 to 19:00 on even dates and from 7:30 to 13:30 on odd dates, but from 10:00 to 13:00 on Sundays and closed on Saturdays
  • Mo-Sa 08:00-13:00,14:00-17:00 || "by appointment"
    Here does the fallback rule come in handy. It applies for any time which was not handled by previous rules.
  • Su-Tu 11:00-01:00, We-Th 11:00-03:00, Fr 11:00-06:00, Sa 11:00-07:00
    Because of the definition that following rules will overwrite previous ones, times which span over midnight have to use additional rules which are separated by a comma instead of a semicolon.
  • Mo-Su,PH 15:00-03:00; easter -2 days off
    Every day, even on public holiday open, but closed on Good Friday.
  • Dec 11-Dec 17: Su 10:00-17:00
    Open on the 3rd Advent (which cannot take place before the 11th or after the 17th December) from 10:00 a.m. to 5:00 p.m.
  • Mo-Fr 09:00-12:30,13:30-17:00; PH -1 day 09:00-12:30; Sa-Su,PH off
    Open Monday to Friday from 9:00 to 12:30, and from 13:30 to 17:00 except on weekdays before public holidays, and closed on weekends and public holidays.
  • For more examples check out the evaluation tool and the documentation of opening_hours.js.

Resumen de sintaxis

Este resumen cubre la mayoría de casos. Su objetivo es facilitar la composición de la mayoría de etiquetas de Horarios de apertura en el menor tiempo, no explicar toda la sintaxis. Para casos más complicados, consulta las páginas de especificación completa y más explicaciones.

Se pueden chequear las composiciones con la herramienta evaluation tool, o con la aplicación YoHours.

Nota: Cualquiera que esté seguro de haber entendido algo en lo que todos estén de acuerdo y que sea diferente a esta explicación de sintaxis es bienvenido a hacer la corrección.

Leyenda
código está escrito literalmente como tal (incluyendo un separador de espacio   cuando es necesario; los espacios en la sintaxis en otros lugares son solo para su presentación);
elemento se reemplaza por el elemento cuya sintaxis se define en la línea inferior que empieza por elemento:;
item... significa que el item se puede repetir si es necesario;
[ secuencia de items ] significa que la secuencia de items es opcional;
| indica que se debe escoger uno de los items de la secuencia (separados por este símbolo);
Sintaxis general
opening_hours= conjunto de reglas [ ; conjunto de reglas ]...
Cada conjunto de reglas se evalúa en orden, el siguiente conjunto de reglas posiblemente anule la apertura o cierre que se estableció con los conjuntos de reglas anteriores.
conjunto de reglas: regla [ || regla ]...
Cada regla se evalúa en orden hasta que coincida con las fechas u horas indicadas, de lo contrario la próxima regla en el conjunto de reglas será considerada sólo como una alternativa.
regla: rango [ estado ] [ comentario ]
rango: [ años ] fechas [   horas ] | horas | 24/7
Sintaxis para especificar años opcionales
años: intervalo_años [ , intervalo_años ]...
intervalo_años: año [ - año | + ] [ / n ]
Se puede especificar un período opcional de n años dentro de un rango específico, empezando por el primer año especificado.
año: Año de 4 dígitos en el calendario Gregoriano.
Sintaxis para especificar fechas (con horarios opcionales)
fechas: mensualmente | semanalmente | diariamente | variable | vacaciones
mensualmente: días_mes [   días_semana ]
semanalmente: [ semana   intervalo_semanas [ , intervalo_semanas ]...   ] intervalo_días_semana [ , intervalo_días_semana ]...
diariamente: meses [   días_mes [ , días_mes ]... ]
variable: fechas_variables [ - fechas_variables ]
meses: Mth [ -Mth ]
días_mes: dd [ -dd ]
intervalo_semana: ww [ - ww | + ] [ / n ]
Un período opcional de n semanas se puede especificar por semanas incluyendo el intervalo indicado, empezando por el primer número de semana especificado ww.
días_semana: intervalo_días_semana [ , intervalo_días_semana ]... | Wd[ n [ , n ]... ]
Los días de la semana pueden ir seguidos de los números de rango, contados positivamente desde el comienzo del mes o negativamente desde el final del mes:
p. ej. Mo-Fr 08:00-09:00, o Mo[1,3] 08:00-09:00;
p. ej. Su[1] significa el primer Domingo del mes, y Su[-1] significa el último domingo del mes.
intervalo_días_semana: Wd [ - Wd ]
ww: Número de la semana de 2 dígitos (año ISO), en rango 01-53, p. ej. week 25 Mo 08:30-20:00
dd: Número del día del mes de 2 dígitos en rango 01-31, p. ej. Dec 25
Mth: Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec
Abreviatura de 3 letras del nombre del mes en inglés, p. ej. Dec 25 para Diciembre
Wd: Mo | Tu | We | Th | Fr | Sa | Su
Abreviatura de 2 letras del nombre del día de la semana en inglés, p. ej. Fr 08:30-20:00 para Viernes
fecha_variable: fiesta_anual [ sign n days ]
fiesta_anual: easter (Pascua)
Por el momento, la única fiesta variable anualmente específica es Easter (asumiendo el calendario Gregoriano cristiano).
vacaciones: PH | SH
PH, vacaciones públicas (depende de la ubicación, requiere datos por país / región); SH, vacaciones escolares (depende de la ubicación, requiere datos de curso académico).
Sintaxis para especificar horas
horas: rango_horario [ , rango_horario ]...
rango_horario: hora [ - hora | + ]
hora: hora_fija | hora_variable
hora_fija: HH : mm
hora_variable: momento | ( hora_respecto momento )
momento: dawn | sunrise | sunset | dusk (amanecer, salida del sol, puesta del sol, atardecer)
Tener en cuenta que los horarios de salida y puesta del sol requieren geolocalización para calcular la posición de elevación angular del sol y la elevación angular del horizonte observable (que también depende de la altitud). Pueden aproximarse al nivel del mar en el geoide de modelado o simplemente estimarse aproximadamente en la hora local (por país y zona horaria).
hora_respecto: significa hh : mm
hh: Cifra de 2 dígitos para la hora relativa en rango 00-48, p. ej. (sunrise+01:00)-12:00.
HH: Cifra de 2 dígitos para la hora absoluta (en el día, en formato 24 h, no am/pm) en rango 00-23, p. ej. Fr 08:30-20:00.
mm: Cifra de 2 dígitos para los minutos (en una hora) en rango 00-59, p. ej. Fr 08:30-20:00.
Otros elementos generales usados en la sintaxis para ajustar horas y fechas
sign: + | -
n: Número integral positivo.
Sintaxis para modificadores opcionales
estado: unknown | open | closed | off
unknown: estado inicial abierto o cerrado, excepto en las fechas y horarios anteriores (también se puede usar para anular un estado abierto o cerrado explícito anterior);
open: abierto en las fechas y horarios indicados (o de forma permanente si no se indica horario), excepto en las fechas y horarios anteriores que siguen;
closed o off: cerrado en las fechas y horarios indicados (o de manera permanente si no se indica horario), excepto en las fechas y horarios anteriores que siguen;
En cada regla del primer conjunto de reglas del valor de la etiqueta (incluyendo los retrocesos), si el estado no está especificado explícitamente con un rango específico, se asume que significa open, dejando el resto de datas no especificadas con horario como unknown; el cronograma resultante es luego modificado sucesivamente por cada siguiente conjunto de reglas.
comentario: "texto"
Un pequeño comentario (entre " pero sin contener ninguna ") muestra restricciones o especificaciones aplicables, p. ej. "children only" (sólo niños), "limited service" (servicio limitado), o "reservation by phone" (reserva por teléfono).
Este comentario está destinado a mostrarse en aplicaciones y no debe interpretarse automáticamente. El idioma utilizado en este comentario no está especificado por el valor de la etiqueta en sí, pero podría especificarse (para fines de localización) por etiquetas cuya clave contenga un sufijo de código de idioma.

Syntax

  • wd weekday, available: Mo · Tu · We · Th · Fr · Sa · Su Fr 08:30-20:00
  • hh hour, always two digits number in 24 hour basis (no am/pm), in the format "hh:mm" · Fr 08:30-20:00
  • mm minute, always two digits number in the format "hh:mm" Fr 08:30-20:00
  • mo month, available: Jan · Feb · Mar · Apr · May · Jun · Jul · Aug · Sep · Oct · Nov · Dec · "mo md" Dec 25
  • md monthday, always two digits number in the format · "mo md" Dec 25
  • we week number, always a two digit number in range 01-53, in the format "week we" week 25 Mo 08:30-20:00
  • SH School holidays. For the non-native English speakers, note that this also includes the summer holidays, so it's not limited to holidays during the school year. Mo-Fr 08:00-09:00,14:00-15:00; SH off[1]
  • PH Public holiday, can be used to indicate different opening hours during public holidays Mo-Fr 09:00-17:00; PH 10:00-12:00; PH Su off[1]
The above example means normal hours are Monday to Friday 9 am to 5 pm, except on public holidays it is 10 am to 12 pm, except public holidays that fall on a Sunday.

The general syntax for the value is: hh:mm-hh:mm 08:30-20:00

The general syntax for the value is: wd hh:mm-hh:mm Fr 08:30-20:00

The general syntax for the value is: mo md: hh:mm-hh:mm Dec 25: 08:30-20:00 Note that the colon is optional as mentioned under Key:opening_hours/specification.

The general syntax for the value is: mo-mo: wd hh:mm-hh:mm Jun-Aug: Su 10:30-16:00 to specify the opening times on Sundays in June, July and August. Note that the colon is optional as mentioned under Key:opening_hours/specification.

The general syntax for the value is: week we: wd hh:mm-hh:mm week 25: Mo 08:30-20:00 Note that the colon is optional as mentioned under Key:opening_hours/specification.

Rules

  • Consecutive hours [always needs open-close] separated by "-" · 08:30-20:00
  • Consecutive weekdays open separated by "-" · Mo-Fr
  • Consecutive monthdays open separated by "-" · Dec 20-26 or Dec 20-Jan 06
  • Open with periodicity "n" within a range of consecutive monthdays, the range is followed by "/n" 02-30/n
  • Consecutive weeks open separated by "-" · week 01-26
  • Open with periodicity "n" within a range of consecutive weeks, the range is followed by "/n" week 02-52/n
  • A break on days separated by "," · Mo,We,Fr
  • A break on hours separated by "," · 08:30-14:00,16:30-20:00
  • Different hours on different days can be separated by "," (additive) or ";" (overwrite) Mo-Sa 13:30-15:00,17:00-20:00, Tu-Sa 08:00-12:00; Th 11:00-16:00,17:00-19:00
reads as: these opening hours for these days ,(and) these opening hours for these days ;(but) these opening hours for these days.
  • A weekday off will be tagged as "wd off" Tu off
  • A range of weekdays off will be tagged as "wd-wd off" Tu-Th off
  • A month off will be tagged as "mo off" Aug off
  • A range of months off will be tagged as "mo-mo off" Aug-Sep off
  • A monthday off will be tagged as "mo md off" Dec 25 off
  • A range of monthdays off
    • "mo md-md off" Dec 24-26 off
    • "mo md - mo md off" Dec 25-Jan 06 off
  • Exceptions to a range of days, first the range then the exception
    • 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
    • This means these are not additions, for example Mo-Fr 08:00-12:30; We 14:00-17:00 means that on Wednesdays, the shop is only opened in the afternoons and not additionally.
  • If it is in the first or last day of a range then don't use the exception rule, use the usual Mo-Fr 10:00-20:00; Sa 10:00-14:00
  • Non-consecutive or semi-consecutive days of the week will be tagged as wd[x] Su[3] 09:00-12:00
    • This is used to indicate the 3rd Sunday of the month from 9 am to 12 pm.
    • Use -1 to indicate the last day of the month; e.g., Aug Th[-1] means last Thursday in August.
    • Can use grouping, Su[1,3,5] and Su[1-3]
  • If hours are non stop some days then 00:00-24:00
  • If it is 24 hours 7 days a week it has a specific value: 24/7.
    • This way it can render a specific icon.
  • A special time value to mark the time the sun rises is: sunrise.
  • A special time value to mark the time the sun sets is: sunset.
  • A + after a time means "from" or "open end" Sa 22:00+ or Sa 18:00-22:00+

See the formal specification for more details.

Common mistakes

Incorrect stop hand Correct check mark Notes notice "i"
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" Add contact:phone=072-360-3200
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-through: 24/7
06:00-23:00 open "Dining in" ||
00:00-24:00 open "Drive-through"

or
opening_hours=06:00-23:00
opening_hours:drive_through=00:00-24:00
Using two tags has the advantage that it can be understood by software, e.g. to warn the user that only drive-through will be open on arrival.
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 See last example
Mo-Su,PH 08:00-20:00; 2025 May 15 - closed closed; 2020 Jan 01 - 2025 May 15 Mo-Su,PH 08:00-20:00 Open-ended date ranges (e.g. when shop has announced shutdown in the future) are not possible. Instead, invert the condition and use start date in the past.
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 01:00-01:00 off Use additional rules. You cannot say "Sa,Su off" because that would set the time "Sa 00:00-01:00" to closed.
Same thing on public holidays, but we must stay closed between 00:00-01:00 the day after. So "off" for 24h starting at 01:00.

Non-Gregorian calendars

There has been some discussion about how to map non-Gregorian calendars (“Opening hours syntax for non Gregorian calendar”. 17 May 2019. ).

Usage on highways

While time based restrictions are also tagged with access:conditional=* , mappers also prefer / also add opening_hours=* on highway=*, since this scheme -typically using positive values instead of negative ones- has multiple advantages over access:conditional=* in cases where the element is closed for all modes of transport on some specified moments:

  • no need to repeat the closure-tags for all tagged modes of transport (foot:conditional=* + bicycle:conditional=* + horse:conditional=* + .., which are needed since a mode-specific foot=yes overwrites a general access:conditional=no @ ... - tag)
  • easier tagging with positive values for regular opening hours (such as Mo-Fr 07:00-19:00; Sa-Su 10:00-17:00;  the negative values in access:conditional=* can give unexpected results in cases with different regimes on different days on the day of a regime change and the closure passes midnight
  • easier to make explicit that it has been established that the way is indeed open all days and all hours (opening_hours=24/7) for cases where this is not self-explanatory, such as path in nature areas where many are closed after sunset or seasonally (many paths without an access-conditional-tag in OSM are in reality closed at specified times)
  • easier to make explicit in one tag that that the element is indeed closed for all modes of transport (with access:conditional tags for all different modes of transport must be evaluated)
  • more support for checking / validating the results of syntax (example)
  • more support for visualizing current status (open/closed); example  

Current usage of opening_hours on highways

A more precise comparison of usage on highway=* requires further analysis, since access:conditional=* is not only used for time-based restrictions, but also for other types of restrictions, such as length, weight or weather circumstances. However this comparison of the most frequently used values might be illustrative:

Router support

Implementation

JavaScript

JavaScript implementation by User:Ypid:

Other implementations:

  • Web to OSM Opening Hours - A tool for copy&pasting (almost) any website content and getting a decently formatted opening_hours-string. Contributions welcome on GitHub!

Java

Kotlin

PHP

Python

C++/Qt

  • KOpeningHours Parsing, validation and evaluation (status at a certain time, iteration over intervals)

Go

Rust

CartesApp

  • Cartes.app uses this key on the POIs chosen by the user by displaying green, red or white dots depending on whether the time falls within the opening or closing period or if the POI does not have any times specified in its opening_hours tag.

OsmAnd

OsmAnd 2.0 showing whether the POI is known to be open or closed based on tagging of opening_hours. For example, the my daBBA restaurant was closed when the screenshot was taken; however, Sugran Swayapakghar was open.
  • OsmAnd uses this tag on the POI search screen. The implementation now includes more values (such as months and dates), added together with conditional restriction support.

Opening hours for Ulm, Neu-Ulm, and surroundings

Ulm, Neu-Ulm and surrounding areas.

The web application is available on http://ulm-oeffnungszeiten.creal.de. Opening hours for the local area are visualized on a map. The source code of this application is freely licensed and available via GitHub. Adapting the application to a different city is very easy and described on the GitHub page.

More maps and applications

Web applications:

Mobile apps:

  • My Opening Hours for Android devices
  • Vespucci, full featured OSM editor for Android that includes special opening hours interface that includes support for highly complicated opening hours
  • StreetComplete, newbie friendly OSM editor that allows to collect, among other data, opening hours information.

Tools:

Rendering

24/7 (around the clock) shouts out for special treatment, perhaps something like adding "24" to the object icon: .

Any other special cases are much less obvious.

Maps showing opening hours:

Former tags, now deprecated

The following (undocumented) keys have been deprecated and should be replaced by this opening_hours=*. Their value should be interpreted to set the value of the new key, as described above:

If you know places with this tag, verify if it could be tagged with another tag.
Automated edits are strongly discouraged unless you really know what you are doing!
If you know places with this tag, verify if it could be tagged with another tag.
Automated edits are strongly discouraged unless you really know what you are doing!
If you know places with this tag, verify if it could be tagged with another tag.
Automated edits are strongly discouraged unless you really know what you are doing!
If you know places with this tag, verify if it could be tagged with another tag.
Automated edits are strongly discouraged unless you really know what you are doing!

Related tags

opening_hours:signed=no - When the opening hours are not posted on a sign visible externally

The following keys use the same syntax for different purposes:

  • collection_times=* – The collection times of a post box or recycling container
  • service_times=* – The times of a special service at a feature which is different than the opening hours, e.g, a religious service
  • breakfast=* – If and when breakfast is served
  • lunch=* – If and when lunch is served
  • dinner=* – If and when dinner is served
  • happy_hours=* – Time when a place offers discounts on alcoholic drinks
  • smoking_hours=* – Smoking is permitted within in a defined time range only

Conditional restrictions also re-use the opening hours syntax to specify date- and time-based conditions.

If a location is closed permanently, then delete such object if it fully gone without risk of being remapped. If there are remains present you can use a tag with a lifecycle prefix such as disused:*=* or abandoned:*=*

See also

External links

Online tools:

  • Openingh.openstreetmap.de – Tool for checking and evaluating opening_hours tags
  • YoHours – Online editor for the tag syntax
  • WebToOSMOH – Online converter of free-form text to opening_hours syntax
  • OSM Open – Find POIs that are open at a specific point in time

Parser libraries:

Validator libraries:

Converter libraries:

Editor libraries:

References

  1. 1.0 1.1 The default holidays can be added to opening_hours.js. There is an alternative system for default values which is currently not evaluated by opening_hours.js: Default is a proposal for a default values system. This proposal can set default values such as maxspeed for areas (countries, states, etc.), but also holidays periods. A country, a zone area can subscribe to a default containing such holidays definitions.
  2. https://github.com/rezemika/humanized_opening_hours?tab=readme-ov-file#have-nice-schedules