IT:Key:opening_hours
![]() |
Descrizione |
---|
Descrive l'orario di apertura di qualche esercizio, ufficio ecc. L'inserimento deve essere fatto seguendo uno specifico formato standard. ![]() ![]() |
Gruppo: Proprietà |
Schema URL |
https://openingh.openstreetmap.de/evaluation_tool/?EXP=$1 |
Applicabile agli elementi |
Vedi anche |
Stato: de facto |
Strumenti |
E' possibile inserire opening hours per quasi tutto ciò che ha un orario di apertura. Supermarkets e piccoli negozi di alimentari che hanno orari di apertura diversi (anche nella stessa città), esercizi pubblici aperti tutta la notte, specialmente nelle aree metropolitane. Alcune farmacie, distributori di benzina, pubs e ristoranti fast-food open possono essere aperti 24/7. Questa è una informazione molto importante se siete alla ricerca di qualcosa durante la di notte.
Inoltre è possibile codificare l'URL in cui gli orari di apertura attuali possono essere consultati con opening_hours:url=http://example.org/.
Prima di continuare nella lettura, leggere i seguenti documenti: Proposed features/Time domains e Key:opening_hours/specification.
![]() | There is an easy to understand tutorial available. |
Riepilogo della sintassi
Questo riepilogo è una sintesi che spiega come trattare l'inserimento degli orari che si presentano con maggior frequenza. L'obiettivo è quello di inserire i dati in maniera veloce e non quello di spiegare la sintassi completa . Per i casi più complicati, fare riferimento qlle seguenti paginesi the full specification e more explanations.
Per verificare le modalità di inserimento degli orari sono disponibili i seguenti tools :evaluation tool o
the simpler YoHours application.
- Legenda
code
is either written literally as such (including a literal space separator- element is to be replaced by the element whose syntax is defined in a line starting by element: below;
- item... means that item can be repeated as needed.
- [ sequence of items ] means that the sequence of items is optional;
- | indicates that one of the sequences of items (separated by this symbol) must be chosen;
- General syntax
opening_hours=
rulesets [;
rulesets ]...- Each ruleset is evaluated in order, the next ruleset possibly overriding the initial open or closed state that may have been matched in the previous rulesets.
- rulesets: rule [
||
rule ]...- Each rule is evaluated in order until it matches for the indicated dates or times, otherwise the next rule in the ruleset will be checked only as a fallback.
- rule: range [ status ] [ comment ]
- range: [ years ] dates [
24/7
- Syntax for specifying optional years
- years: year_range [
,
year_range ]... - year_range: year [
-
year |+
] [/
n ]- An optional period of n years may be specified for years to include within the specified range starting at the first specified year.
- year: a 4-digit year number in the Gregorian calendar.
- Syntax for specifying dates (with optional times)
- dates: monthly | weekly | daily | variably | holidays
- monthly: monthdays [
- weekly: [
week
,
week_range ]...,
weekday_range ]... - daily: months [
,
monthdays ]... ] - variably: variable_date [
-
variable_date ] - months: Mth [
-
Mth ] - monthdays: dd [
-
dd ] - week_range: ww [
-
ww |+
] [/
n ]- An optional period of n weeks may be specified for weeks to include within the specified range starting at the first specified week number ww.
- weekdays: weekday_range [
,
weekday_range ]... | Wd[
n [,
n ]...]
- Week days may be followed by rank numbers, counted positively from the start of the month, or negatively from the end of month:
- e.g.
Mo-Fr 08:00-09:00
, orMo[1,3] 08:00-09:00
; - e.g.
Su[1]
means the first Sunday of the month, andSu[-1]
means the last Sunday of the month.
- weekday_range: Wd [
-
Wd ] - ww: a 2-digit week number (in ISO year) in range 01-53, e.g.
week 25 Mo 08:30-20:00
- dd: a 2-digit monthday number in range 01-31, e.g.
Dec 25
- Mth:
Jan
|Feb
|Mar
|Apr
|May
|Jun
|Jul
|Aug
|Sep
|Oct
|Nov
|Dec
- a 3-letter abbreviated English month name, e.g.
Dec 25
- a 3-letter abbreviated English month name, e.g.
- Wd:
Mo
|Tu
|We
|Th
|Fr
|Sa
|Su
- a 2-letter abbreviated English weekday name, e.g.
Fr 08:30-20:00
- a 2-letter abbreviated English weekday name, e.g.
- variable_date: yearly_fest [ sign n
days
] - yearly_fest:
easter
- For now, the only variable yearly fest day specified is Easter (assuming the Christian Gregorian calendar).
- holidays:
PH
|SH
- public holiday (location dependant, requires data per country/region); scholar holiday (location dependant, requires data per scholar academy)
- Syntax for specifying times
- times: time_range [
,
time_range ]... - time_range: time [
-
time |+
] - time: fixed_time | variable_time
- fixed_time: HH
:
mm - variable_time: event |
(
event offset_time)
- event:
dawn
|sunrise
|sunset
|dusk
- Note that sunset and sunrise times requires geolocation to compute the position angular elevation of the sun, and the the angular elevation of the observable horizon (which is also dependant of the altitude). They may be approximated at sea level on the modeling geoid, or just estimated roughly in local time (per country and time zone).
- offset_time: sign hh
:
mm - hh: a relative 2-digit hours number in range 00-48, e.g.
(sunrise+01:00)-12:00
- HH: an absolute 2-digit hours number (in day, in 24h format, no am/pm) in range 00-23, e.g.
Fr 08:30-20:00
- mm: a 2-digit minutes number (in hour) in range 00-59, e.g.
Fr 08:30-20:00
- Other generic syntaxic elements used for tuning dates and times
- sign:
+
|-
- n: a positive integer.
- Syntax for optional modifiers
- status:
unknown
|open
|closed
|off
unknown
: initial open or closed state, except at overriding dates and times that follow (may also be used to override a previous explicit open or closed status);open
: open at the indicated dates and times (or permanently if no time is given), except at overriding dates and times that follow;closed
oroff
: closed at the indicated dates and times (or permanently if no time is given), except at overriding dates and times that follow;- In each rule of the first ruleset of the tag value (including fallbacks), if the status is not explicitly specified with the specified range, it is assumed to be meant as
open
, leaving all other unspecified dates and times asunknown
; the resulting schedule is then successively modified by each following ruleset.
- comment:
"
text"
- A short comment (not containing any
"
) showing applicable restrictions or specifications, e.g."children only"
,"limited service"
, or"reservation by phone"
. - This comment is intended to be displayed in applications and not to be interpreted automatically. The language used in this comment is not specified by the tag value itself, but this could be specified (for localisation purpose) by tags whose key contains a language code suffix.
- A short comment (not containing any
How to map
This is a property tag so it must go with a related tag; e.g.,
- amenity=biergarten
- amenity=charging_stationwhere as of the year 2011 a project is underway to
- amenity=fast_food
- amenity=fuel
- amenity=library
- amenity=parking
- amenity=pharmacy
- amenity=pub
- amenity=restaurant
- amenity=toilets
- shop=bakery
- shop=convenience
- shop=farm
- shop=supermarket
- tourism=museum
- …
Values
Before tagging ways , see Key:access.
The evaluation tool and YoHours are webtools which help to determine the values. Please use English for weekday and month names.
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
- Sa-Su 00:00-24:00
- Applied to: opens only the weekend but non-stop, 24h
- 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, info 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, info 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, info recovered by software
- 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 Wednesdays of even weeks
- Applied to: any facilities with opening hours (related tags)
- Render on map: nothing, info recovered by software
- 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 once, times which span over midnight have to use additional rules which are separated by comma instead of semicolon.
- Mo-Su,PH 15:00-03:00; easter -2 days off
- Every day, even on public holiday open, but closed on good friday.
- May-Sep: Mo-Fr 09:00-18:00; Sa,Su,PH 09:00-16:00; Oct-Apr: Mo-Fr 09:00-17:00; Sa 09:00-15:00
- An example how month range can apply to multiple weekday rules.
- For more examples check out the evaluation tool and the documentation of opening_hours.js.
Syntax
- wd weekday, available: Mo · Tu · We · Th · Fr · Sa · Su (e.g., > Fr 08:30-20:00)
- hh hour, always two digits number in 24h basis (no am/pm), in the format "hh:mm" · (e.g., > Fr 08:30-20:00)
- mm minute, always two digits number in the format "hh:mm" (e.g., > Fr 08:30-20:00)
- mo month, available: Jan · Feb · Mar · Apr · May · Jun · Jul · Aug · Sep · Oct · Nov · Dec · "mo md" (e.g., > Dec 25)
- md monthday, always two digits number in the format · "mo md" (e.g., > Dec 25)
- we week number, always a two digit number in range 01-53, in the format "week we" (e.g., > week 25 Mo 08:30-20:00)
- SH School Holiday, can be used to indicate different opening hours during school holidays (e.g., 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 (e.g., 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 9am to 5pm, except on public holidays it is 10am to 12pm, except public holidays that fall on a Sunday.
The general syntax for the value is: hh:mm-hh:mm (e.g., > 08:30-20:00)
The general syntax for the value is: wd hh:mm-hh:mm (e.g., > Fr 08:30-20:00)
The general syntax for the value is: mo md: hh:mm-hh:mm (e.g., > 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 (e.g., 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 (e.g., > 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 "-" · (e.g., > 08:30-20:00)
- Consecutive weekdays open separated by "-" · (e.g., > Mo-Fr)
- Consecutive monthdays open separated by "-" · (e.g., > Dec 20-26) or (e.g., > Dec 20-Jan 06)
- Open with periodicity "n" within a range of consecutive monthdays, the range is followed by "/n" (e.g., > 02-30/n)
- Consecutive weeks open separated by "-" · (e.g., > week 01-26)
- Open with periodicity "n" within a range of consecutive weeks, the range is followed by "/n" ( e.g.> week 02-52/n )
- A break on days separated by "," · (e.g., > Mo,We,Fr)
- A break on hours separated by "," · (e.g., > 08:30-14:00,16:30-20:00)
- Different hours on different days are separated by ";" (e.g., > Mo 10:00-12:00,12:30-15:00; Tu-Fr 08:00-12:00,12:30-15:00; Sa 08:00-12:00)
- reads as: this opening hours for this days ; this opening hours for this days
- A weekday off will be tagged as "wd off" (e.g., > Tu off)
- A range of weekdays off will be tagged as "wd-wd off" (e.g., > Tu-Th off)
- A month off will be tagged as "mo off" (e.g., > Aug off )
- A range of months off will be tagged as "mo-mo off" (e.g., > Aug-Sep off)
- A monthday off will be tagged as "mo md off" (e.g., > Dec 25 off)
- A range of monthdays off will be tagged as "mo md-md off" (e.g., > Dec 24-26 off) or "mo md - mo md off" (e.g., > Dec 25-Jan 06 off )
- Exceptions to a range of days, first the range then the exception (e.g., > Mo-Sa 10:00-20:00; Tu off) or (e.g., > Mo-Sa 10:00-20:00; Tu 10:00-14:00) or (e.g., > 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 (e.g., > 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] (e.g., Su[3] 09:00-12:00)
- This is used to indicate the 3rd Sunday of the month from 9am to 12pm.
- Use -1 to indicate the last day of the month; e.g., Aug Th[-1] means last Thursday in July.
- Can use grouping, (e.g., Su[1,3,5] and Su[1-3])
- If hours are non stop some days then (e.g., > 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" (e.g., Sa 22:00+ or Sa 18:00-22:00+)
See the formal specification for more details.
Common mistakes
- 7/8-23 (incorrect) → Mo-Su 08:00-23:00 (correct)
- 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" (and add 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"
- 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-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. Use additional rules. You can not say "Sa,Su off" because that would set the time "Sa 00:00-01:00" to closed.
Implementation
JavaScript
JavaScript implementation by User:Ypid:
- evaluation tool
- source code
- Map showing elements with opening_hours
- Python script to search with regex and to load values which could not be evaluated in JOSM (documentation in README).
- Does follow the formal specification originally created by Netzwolf.
- Based on initial coding and design done by AMDmi3.
JavaScript library
JavaScript library by User:AMDmi3 (on which the work from User:Ypid is based on).
- javascript library with wide set of features and nice documentation
- demo
OsmAnd
OsmAnd uses this tag in the POI search screen. The implementation is only partial, currently no dates, weeknumbers or holidays are supported, but most values should get parsed.
Opening hours for Ulm, Neu-Ulm & surroundings
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
- Hoursome (for iOS devices)
- My Opening Hours (for Android devices)
- osm24.eu where you can select different POI categories
- statistics Visualization of the data quality and growth over time.
- YoHours, a website to create opening hours simply by dragging time intervals on a calendar.
Code
- PHP code in SVN to parse opening_hours.
- Services_Openstreetmap, a PEAR PHP package for working with the OSM API, supports parsing a wide range of Opening Hours syntax - with examples here.
Rendering
In the case of 24/7 it can be something like adding a 24 to the object icon.
The rest of values have no obvious rendering and may be accessed with context menu or alike.
- Maps showing opening hours:
Former deprecated tags
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:
See also Conditional_restrictions.
See also
- JOSM/Plugins/OpeningHoursEditor - a graphical editor for the opening_hours tag
- YoHours - Online editor for the tag syntax
- Openingh.openstreetmap.de - tool for validating and evaluating opening_hours tags
- Key:access - time restrictions
- Conditional restrictions - using opening_hours syntax for time-based conditions
- Key:lit - Artificial light sources
- Key:collection_times - for post boxes and recycling points
- Key:service_times - for churches and other features that have different service times than opening hours
- Key:smoking_hours - for times when smoking is allowed indoors
- Key:happy_hours - for times when alcoholic drinks are offered at a discount
Notes
- ↑ 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...) but also holidays periods. A country, a zone area can subscribe to a default containing such holidays definitions.