Syntax Öffnungszeiten

Ich rätsel nun seit einigen Minuten wie ich Sommer und Winter-Öffnungszeit angebe. Die Wikiseite ist mir da nicht wirklich eine Hilfe.
https://wiki.openstreetmap.org/wiki/DE:Key:opening_hours#Allgemeine_Syntax

Allgemeine Syntax

hh:mm-hh:mm (z. B.> 08:30-20:00)
Angabe die täglich gilt
wd hh:mm-hh:mm (z. B.> Fr 08:30-20:00)
Angabe für einen Wochentag, gilt also für jeden dieser Wochentage im Jahr
mo md hh:mm-hh:mm (z. B.> Dec 24 08:30-20:00)

Angabe für einen bestimmten Tag in einem bestimmten Monat (z. B. Angabe von Öffnungszeiten an Heiligabend)
mo: hh:mm-hh:mm (z. B.> Jan: 10:30-16:00)
Angabe für einen Monat (z. B. Angabe von Öffnungszeiten im Januar)

(…)
aufeinanderfolgende Stunden [Anfang-Ende immer benötigt] getrennt durch “-” · ( z. B.> 08:30-20:00 )
aufeinanderfolgende Wochentage getrennt durch “-” · ( z. B.> Mo-Fr )
aufeinanderfolgende Tage im Monat getrennt durch “-” · ( z. B.> Dec 20-26 ) oder ( z. B.> Dec 20-Jan 06 )

wenn ich das logisch durchdenke, dann schreibt man Mai-Sep: 11:00+,Tu off; Oct-Apr: Mo,We,Th 17:00+;Fr,Sa,Su,Ph 11:00+;Tu off

Die Wikiseite ist etwas konfus. Es fehlt das Schema, wie man mehrere Monate verbindet und wie man diese dann von anderen trennt. Vielleicht sollte sich da mal ein Kundiger ran machen.

Wenn ich das richtig interpretiere, dann ist die Syntax folgende:
mo-mo: hh:mm-hh:mm;mo-mo: hh:mm-hh:mm

Das sind fünf Regelsätze (wenn du „Mai“ noch korrigierst):

(1) May-Sep: 11:00+ [an sämtlichen Wochentagen]
(2) Tu off [gilt ganzjährig ergänzend zu (1), aber eine off-Regel ist nie ergänzend, daher kann auch ein Semikolon davor]
(3) Oct-Apr: Mo,We,Th 17:00+
(4) Fr,Sa,Su,Ph 11:00+ [gilt ganzjährig]
(5) Tu off [gilt ganzjährig]

(4) überschreibt einen Teil von (1) (allerdings mit demselbem Wert), (2) und (5) sind aussagegleich. Wenn (2) noch hinter (1) stehen soll, muss das Komma davor weg. Aber auch dann wird es von (5) mit erschlagen, ist also unnötig.

Generell gehört http://openingh.openstreetmap.de/evaluation_tool/ in die OSM-Lesezeichenleiste jedes Mappers :slight_smile: String einwerfen und Kalender durchblättern.

–ks

http://openingh.openstreetmap.de/evaluation_tool/ Das war mir einfach zu chaotisch und nicht ansprechend genug. Ich brauche ganz einfach die Syntax und die Regeln. Die gibt es aber weder auf der Seite, noch kann ich sie aus deinen 5 Regelsätzen erschließen.

Wir hatten das mit dem Überschreiben schon einmal, wo kann man das genau erfahren.

Meine fünf Regelsätze waren eine Analyse des von dir vorgeschlagenen Strings, keine generelle Erklärung der Syntax.

Reicht dir https://wiki.openstreetmap.org/wiki/Key:opening_hours/specification ?

–ks

Mo-Fr 09:00-12:00, Mo 15:00-18:00

→ Regel hinter Komma gilt ergänzend, Montag ist damit 9-12 und 15-18 geöffnet.

Mo-Fr 09:00-12:00; Mo 15:00-18:00

→ Regel hinter Semikolon gilt ausschließend, Montag ist nur 15-18 geöffnet.

–ks

Das mag syntaktisch richtig sein, Beispiel ist aber unglücklich gewählt, da intuitiv irreführend und besser und einfacher gemappt mit

Mo 15:00-18:00, Tu-Fr 09:00-12:00

Es ging um den Unterschied zwischen Komma und Semikolon, nicht um eine Tagging-Anleitung. Natürlich kann man das einfacher machen, aber in deinem Beispiel wäre es egal, ob ein Komma oder ein Semikolon dazwischen steht.

–ks

Also Semikolon trennt Regeln und es wird bei einem gleichen Zeitraum nur die Regel ganz rechts ausgewertet. Könnte mal also den altmodisch freien Mittwoch Mittag auch so schreiben: Mo-Fr 9:00-18:00; We 9:00-12:00

Yepp, das würde funktionieren. Oder „We 12:00-18:00 off“ hinters Semikolon, das überschreibt den geöffneten Vormittag nicht. Ein „We 12:00-18:00“ dagegen würde den geöffneten Vormittag überschreiben (weil beides on-Regeln sind), dann wäre mittwochs nur 12-18 offen.

Ich würde aber mit Rücksicht auf den nächsten Bearbeiter die erste Regel Mo,Tu,Th,Fr formulieren. Ist übersichtlicher. Oder Vor- und Nachmittage separat: Mo-Fr 09:00-12:00, Mo,Tu,Th,Fr 12:00-18:00. Da ist dann das Komma zwischen den Regeln eminent wichtig :slight_smile:

Es wird von links nach rechts ausgewertet, dabei zählt immer die letztgenannte zutreffende Regel für den gefragten Zeitpunkt. Willst du wissen, ob Mittwochs um 15:34 offen ist, sagt in deinem String ganz oben die erste Regel „ja“, die zweite „nein“, also ist zu. Schreibst du aber noch ein „Tu-Th 15:30-15:45“ dahinter, ist wieder offen.

Die Syntax ist nicht ganz einfach und man muss sich da erstmal reindenken, aber dafür kann sie eine ganze Menge.

–ks