Discordian date: Difference between revisions

From Rosetta Code
Content added Content deleted
No edit summary
(illustrate issue mentioned on talk page)
Line 3: Line 3:
'''See Also'''
'''See Also'''
* [[wp:Discordian calendar|Discordian calendar (wiki)]]
* [[wp:Discordian calendar|Discordian calendar (wiki)]]

=={{header|J}}==

<lang j>]</lang>

Example use:

<lang> ] 2012 2 29
2012 2 29</lang>

see [[Talk:Discordian_date|talk page]].


=={{header|Python}}==
=={{header|Python}}==

Revision as of 14:54, 21 July 2010

Task
Discordian date
You are encouraged to solve this task according to the task description, using any language you may know.

Convert a given date from the Gregorian calendar to the Discordian calendar.

See Also

J

<lang j>]</lang>

Example use:

<lang> ] 2012 2 29 2012 2 29</lang>

see talk page.

Python

<lang python>import datetime, calendar

DISCORDIAN_SEASONS = ["Chaos", "Discord", "Confusion", "Bureaucracy", "The Aftermath"]

def ddate(year, month, day):

   today = datetime.date(year, month, day)
   is_leap_year = calendar.isleap(year)
   if is_leap_year and month == 2 and day == 29:
       return "St. Tib's Day, YOLD " + (year + 1166)
   
   day_of_year = today.timetuple().tm_yday - 1
   
   if is_leap_year and day_of_year >= 60:
       day_of_year -= 1 # Compensate for St. Tib's Day
   
   season, dday = divmod(day_of_year, 73)
   return "%s %d, YOLD %d" % (DISCORDIAN_SEASONS[season], dday + 1, year + 1166)

</lang>