Opening_hours, a way to tell it's open on the nth of every month

Hi! I’m trying to add opening_hours, or better yer, service_hours, for a church in my location.

This church has a regular service through the week, but also has a special day, the 13th of every month, with several special masses. I want to add that to the service_hours, but the string gets too long and is being truncated.

This is the string I got:

Mo-Sa 18:30-19:30;Su 08:30-09:30,10:30-11:30,18:30-19:30;Jan 13 08:30-09:30,10:00-11:00,12:00-13:00,16:30-17:30,18:30-19:30;Feb 13 08:30-09:30,10:00-11:00,12:00-13:00,16:30-17:30,18:30-19:30;Mar 13 08:30-09:30,10:00-11:00,12:00-13:00,16:30-17:30,18:30-19:30;Apr 13 08:30-09:30,10:00-11:00,12:00-13:00,16:30-17:30,18:30-19:30;May 13 08:30-09:30,10:00-11:00,12:00-13:00,16:30-17:30,18:30-19:30;Jun 13 08:30-09:30,10:00-11:00,12:00-13:00,16:30-17:30,18:30-19:30;Jul 13 08:30-09:30,10:00-11:00,12:00-13:00,16:30-17:30,18:30-19:30;Aug 13 08:30-09:30,10:00-11:00,12:00-13:00,16:30-17:30,18:30-19:30;Sep 13 08:30-09:30,10:00-11:00,12:00-13:00,16:30-17:30,18:30-19:30;Oct 13 08:30-09:30,10:00-11:00,12:00-13:00,16:30-17:30,18:30-19:30;Nov 13 08:30-09:30,10:00-11:00,12:00-13:00,16:30-17:30,18:30-19:30;Dec 13 08:30-09:30,10:00-11:00,12:00-13:00,16:30-17:30,18:30-19:30;

Is there a better way to compact the information for the special hours? It’s always the 13th of every month.

Thanks in advance!

maybe service_times=Mo-Sa 18:30;Su 08:30,10:30,18:30;Jan 13 08:30,10:00,12:00,16:30,18:30 (...) would make sense and manage to fit?

I suspect that it is not exactly 60 minutes every time anyway?

Hack with partially defining it in service_hours:conditional is also possible, I guess.

(and maybe there is better idea to handle this?)

The months probably need to be enumerated, so something like:

service_times=Jan 13, Feb 13, Mar 13, Apr 13, May 13, Aug 13 08:30, 10:00, 12:00, 16:30, 18:30 || Mo-Sa 18:30, Su 08:30,10:30,18:30

Tool to test

service_times has the advantage of needing only points in time.

Hm. Yes, this seems like a good way to solve it. Will wait a few hours just to see if someone knows a even better way to solve this.

A similar thing was mentioned in Discord recently with suggestion being made:
“I believe you should use Jan 12,Feb 12,Mar 12,Apr 12,May 12,Jun 12,Jul 12,Aug 12,Sep 12,Oct 12,Nov 12,Dec 12 08:00-13:00”

So “service_times=Mo-Sa 18:30;Su 08:30,10:30,18:30; Jan 13,Feb 13,Mar 13,Apr 13,May 13,Jun 13,Jul 13,Aug 13,Sep 13,Oct 13,Nov 13,Dec 13 08:30,10:00,12:00,16:30,18:30” should work for you.

It could be shortend from/to:

Jan 13, Feb 13, Mar 13, Apr 13, May 13, Aug 13 08:30, 10:00, 12:00, 16:30, 18:30 || Mo-Sa 18:30, Su 08:30,10:30,18:30
18:30 || Jan 13, Feb 13, Mar 13, Apr 13, May 13, Aug 13 08:30, 10:00, 12:00, 16:30 || Su 08:30,10:30

The spec at Key:opening_hours - OpenStreetMap Wiki with “monthly: monthdays” could suggest 13 without a month is possible, but it then mentions “md monthday, always two digits number in the format · “mo md” Dec 25” . Maybe it should be updated.

Shortest syntax I could come up with

18:30-19:30, Su 08:30-09:30,10:30-11:30; Jan 13,Feb 13,Mar 13,Apr 13,May 13,Jun 13,Jul 13,Aug 13,Sep 13,Oct 13,Nov 13,Dec 13 08:30-09:30,10:00-11:00,12:00-13:00,16:30-17:30,18:30-19:30

Explanation:

  • 18:30-19:30 for every day
  • , Su 08:30-09:30,10:30-11:30 add the extra Sunday times, note the comma as separator
  • ; Jan 13,Feb 13,Mar 13,Apr 13,May 13,Jun 13,Jul 13,Aug 13,Sep 13,Oct 13,Nov 13,Dec 13 08:30-09:30,10:00-11:00,12:00-13:00,16:30-17:30,18:30-19:30 overwrite when the 13th, note the ; as the separator

Evaluation tool results, timestamped for 11 Jan 2026

P.S. No ; needed at the end because it is a separator and nothing follows at the end.

P.P.S. The evaluation tool also accepted this

18:30-19:30,Su08:30-09:30,10:30-11:30;Jan13,Feb13,Mar13,Apr13,May13,Jun13,Jul13,Aug13,Sep13,Oct13,Nov13,Dec13 08:30-09:30,10:00-11:00,12:00-13:00,16:30-17:30,18:30-19:30

With most of the spaces removed. except the one between the month and the corresponding times. Just not sure if that is really valid syntax

Evaluation tool results, timestamped for 11 Jan 2026

Thanks everyone for your inputs! I’ve chosen the last one as it’s the shortest string that satisfies the issue, although all of your solutions worked out good as well.

Wouldn’t that have to say Mo-Sa 18:30?

It’s all days including Sunday, hence the comma instead of semicolon.

Almost. I used the comma because I also removed that time block from Sunday. I was hunting for the shortest possible notation. If the time block was still present on Sunday the semicolon would be valid as wel
Steps followed:

  • The start, also the longest notation
    Mo-Sa 18:30-19:30; Su 08:30-09:30,10:30-11:30,18:30-19:30 (correct results)
  • As cambbelltree said leaving out the days part simply means all days 18:30-19:30; Su 08:30-09:30,10:30-11:30,18:30-19:30 (correct results)
    “Saving” 6 positions.
  • Now it would be nice if the number of positions could be further reduced.
    The time block 18:30-19:30 is repeated on Sunday. If we remove that from Sunday we save another 11 positions
    18:30-19:30; Su 08:30-09:30,10:30-11:30 (wrong results)
    This however, while at first glance seams correct (the first rule covers all days, including Sunday and the second rule covers Sunday) it wil not produce the required results. Because of the use of the semicolon the Sunday rule wil overwrite the all days rule, the time block 18:30-19:30 disappears from Sunday. Can this be fixed?
  • Yes it can.
    18:30-19:30, Su 08:30-09:30,10:30-11:30 (correct results)
    By using the comma instead of the semicolon the Sunday rule will no longer overwrite the all days rule but wil act as an addition to it. and the time block 18:30-19:30 is inherited from the all days rule.

For the given sample, it would be slightly shorter with the || notation.

For future questions, I added a sample for the 20th of the month to Key:opening_hours#Examples