The Discordian calendar is an alternative calendar used by Discordians.
- The discordian year has 5 seasons, each lasting 73 days: Chaos, Discord, Confusion, Bureaucracy, and The Aftermath.
- The discordian week has 5 days: Sweetmorn, Boomtime, Pungenday, Prickle-Prickle, and Setting Orange. Every year begins with Sweetmorn (and in Chaos).
- Every fourth year (which happens to align with Gregorian leap years), an extra day is inserted between Chaos 59 and Chaos 60 called St. Tib's Day. It is outside of the Discordian week, meaning the day after St. Tib's Day will be Setting Orange, the day before Prickle-Prickle.
- The Gregorian and Discordian calendars line up; both start on the same day, which is called January 1st in the Gregorian calendar, and Chaos 1 in the Discordian one.
- The first Year of Our Lady of Discord (YOLD 1) was 1166 BC in the Gregorian calendar, meaning this year (2017 AD) is YOLD 3183.
- The Discordian calendar also has holidays, but they are not important for this challenge and you should not output them or anything about them.
Write a program or function that outputs or returns today's date (at the time of execution):
Today is Boomtime, the 16th day of Confusion in the YOLD 3183
The format is "Today is $day_of_the_week, the $ordinal day of $season in the YOLD $year"
, where $day_of_the_week is the capitalized (title-case) day of the week, $ordinal is the day of the season as an ordinal (1st, 2nd, 3rd, 4th, ...), $season is the capitalized (title-case) season, and $year is the year.
If your program or function is executed on St. Tib's Day, it should instead output or return "Today is St. Tib's Day in the YOLD $year"
.
Rules:
- Standard loopholes apply.
- If your language of choice has no way of getting the current date, it may also take the current Gregorian date in any reasonable format as input.
- This is code-golf, the shortest code (per language) wins.
- Trailing whitespace is okay.
- Capitalization matters.
- Calling
ddate
in any way is banned - Your program should be guaranteed to work from 3067 to 3265 YOLD (1901 to 2099 AD), outside that range it can give incorrect values
See also:
- Malaclypse The Younger. "Principia Discordia, Or How I Found Goddess And What I Did To Her When I Found Her". p. 00034
- ddate(1)
- Sandbox post for those who can see it