Well, systemd developers made one of the classic blunders a software developer can do: make a program that has to deal with time and dates. Every time I have to deal with timestamps I'm like "oh shit, here we go again".
Anyway, as I understood it the reason this is in systemd is because they wanted to replace cron, and it's fine by me because cron has it's own brain-hurt. (The cron syntax is something that always makes me squint real hard for a while.)
Usually such things have a simple explanation. systemd does a lot with time and date, for example scheduling tasks. It's quite obvious that it has this capabilities, when you think about it.
This plays some kind of role in the debate of systemd being good or not. I'm not sure if goes in the good column or the bad column, but I know it goes into a column.
This is basically just a way nicer, more flexible cron syntax being dressed up as something ridiculous. There are legitimate reasons for wanting something like this, like running some sort of resource heavy disk optimization the first Friday evening of every month or something.
$ systemd-analyze calendar tomorrow
Failed to parse calendar specification 'tomorrow': Invalid argument
Hint: this expression is a valid timestamp. Use 'systemd-analyze timestamp "tomorrow"' instead?
$ systemd-analyze timestamp tuesday
Failed to parse "tuesday": Invalid argument
Hint: this expression is a valid calendar specification. Use 'systemd-analyze calendar "tuesday"' instead?
ಠ_ಠ
$ for day in Mon Tue Wed Thu Fri Sat Sun; do TZ=UTC systemd-analyze calendar "$day 02-29"|tail -2; done
Next elapse: Mon 2044-02-29 00:00:00 UTC
From now: 19 years 4 months left
Next elapse: Tue 2028-02-29 00:00:00 UTC
From now: 3 years 4 months left
Next elapse: Wed 2040-02-29 00:00:00 UTC
From now: 15 years 4 months left
Next elapse: Thu 2052-02-29 00:00:00 UTC
From now: 27 years 4 months left
Next elapse: Fri 2036-02-29 00:00:00 UTC
From now: 11 years 4 months left
Next elapse: Sat 2048-02-29 00:00:00 UTC
From now: 23 years 4 months left
Next elapse: Sun 2032-02-29 00:00:00 UTC
From now: 7 years 4 months left
(It checks out.)
Surprisingly its calendar specification parser actually allows for 31 days in every month:
$ TZ=UTC systemd-analyze calendar '02-29' && echo OK || echo not OK
Original form: 02-29
Normalized form: *-02-29 00:00:00
Next elapse: Tue 2028-02-29 00:00:00 UTC
From now: 3 years 4 months left
OK
$ TZ=UTC systemd-analyze calendar '02-30' && echo OK || echo not OK
Original form: 02-30
Normalized form: *-02-30 00:00:00
Next elapse: never
OK
$ TZ=UTC systemd-analyze calendar '02-31' && echo OK || echo not OK
Original form: 02-31
Normalized form: *-02-31 00:00:00
Next elapse: never
OK
$ TZ=UTC systemd-analyze calendar '02-32' && echo OK || echo not OK
Failed to parse calendar specification '02-32': Invalid argument
not OK
Systemd ignored my calendar override for the builtin raid scanner, so every week my server would chug to a halt to scan the entire array.
In true systemd fashion, the documentation could not explain this behavior, so I had to make a full copy override instead of a merge override because reasons.