French Republican Calendar Tools

/ 30 Brumaire 232
7 minutes / 1379 words

😵 This page requires JavaScript in order to show you MathJax! If you know a better way to integrate MathJax into Hugo in a way that does not require Javascript, please let me know!
I believe that in all facets of life, anything taken for granted should be examined. For me, this includes how I think about and interface with time. Since beginning research into this topic a few years ago, the French Republican Calendar has continued to fascinate and delight me, so much so to the point that I use decimal time and the republican calendar as my default method of tracking time in my personal life.

For those unfamiliar, The French Republican Calendar, also known as the Revolutionary Calendar, was introduced in France during the French Revolution on October 24, 1793, and was used until January 1, 1806. It aimed to de-Christianize the calendar by removing religious and royalist influences, marking its introduction as Year I. The calendar was structured into 12 months of 30 days, divided into three 10-day weeks called ‘décades’. To keep in line with the solar year, extra days termed ‘sansculottides’ were added annually.

This calendar also attempted decimalization of time, with each day having 10 hours, each hour 100 decimal minutes, and each minute 100 decimal seconds. Although this system was abandoned in 1795, the calendar itself persisted until the reign of Napoleon. Its benefits included standardized months and weeks for simpler timekeeping and a secular, nature-focused approach to naming months, offering a culturally neutral view of time.

It can be hard to exist, without practice, in two systems of time - If your friends expect you to meet them at four o’clock in the afternoon, excusing your lateness with “my time is different” rings hollow - so I’ve built a handful of tools over time to make this easier for me.

It’s to the point that I’ve accumulated enough that it’s worth sharing them, in case they may be of interest to anybody else.

This page includes them all, both digital and physical, and may be amended with time as I build new ones. If you want to be kept aware of new tools as I build them, I announce them occasionally in my newsletter.

Tools

As explored more in detail below, mentally keeping track of two time systems is no trivial thing. Luckily for us, we live in the personal computing era, and these devices make it much easier to do. Over the years I’ve built a number of tools to help me utilize the calendar, and I share them with you below.

Keep in mind they are in rough shape - definitely function over form.

You can also explore the full git repo of tools and examples here.

Desktop Calendar

A physical calendar is a critical tool in my day to day life. It tracks days of rest, birthdays, holidays, and all other events. Accordingly, I have built my own printable desktop calendar which sits on my desk.

It has a number of features designed to make it functional as your main calendar:

  1. The Wheel of the Year Sabbats and Canadian Holidays are marked with symbols.
  2. Traditional Weekends are marked in red. Tracking normal days of rest is critical to a functional calendar.
  3. Space for monthly tasks is left at the bottom.
  4. The Sansculottides have space for writing down your growth over the past year.

–> Buy it here

rcal.sh

cal is a very handy command line utility for most people who work on the linux command line, and so accordingly I have constructed an equivalent in bash that suits my needs - rcal. It outputs dates as such:

    Frimaire, 232
Pr Du Tr Qu Qn Sx Sp Oc No De

 1  2  3  4  5  6  7  8  9 10 
11 12 13 14 15 16 17 18 19 20 
21 22 23 24 25 26 27 28 29 30 

It is currently unfinished, but will eventually support the following command flags:

  -1, --one       Display single month output. (This is the default.)"
  -3, --three     Display three months spanning the date."
  -n, --months N  Display N number of months, starting from the month containing the date."
  -y, --year      Display a calendar for the whole year."
  -Y, --twelve    Display a calendar for the next twelve months."
  -h, --help      Display help text and exit."

Check out the git repo here.

rdate.sh

This is not a full re-implementation of the unix date tool. Someday it might be - but currently it fills the role of placing the current Republican date in my Waybar.

Download the script here.

The config for my waybar is this:

"custom/rdate": {
   "format": "{}",
   "exec": "bash /home/lagomorph/.config/waybar/modules/rdate.sh -s",
   "tooltip": "true",
   "tooltip-format": "bash /home/lagomorph/.config/waybar/modules/rcal.sh",
   "interval": 30
} 

toRepublicanCalendar.js

The calendar on this page & the date at the top of this site - and on most pages as well, are calculated using this quick and dirty javascript function. My implementation is a little simpler than others I’ve seen - many manually count up from the number of days since the end of the calendar - but I’ve been using this conversion script for several years with no noticeable problems in accuracy.

It accounts for the Romme Rule in Leap Years, and additionally is aware of the Sansculottides.

A full html calendar using this conversion script is shown prominently on my browsers start page.

Check out the script here.

Tampermonkey Userscript

This browser userscript converts every <time> html tag with the equivalent Republican date. It works on most news sites and blogs.

Conversions

It is not trivial to convert between Gregorian time and Republican time, especially mentally - which can make balancing two calendars tricky without practice.

An approximation of the current decimal hour can be done by dividing the traditional hour by 2.4 (since 24 traditional hours equal 10 decimal hours). For example, 12:00 traditional time is approximately 5 decimal hours (12 / 2.4).

An outline of the conversion process is shown below.

Date Conversions

  1. Calculate Days Since Start of French Republican Calendar:

    Let \( G \) be the Gregorian date and \( R \) be the Republican date. First, find the number of days since the start of the Republican Calendar (22 September 1792). If \( Y \), \( M \), and \( D \) are the year, month, and day of the Gregorian date, respectively:

    \[ \text{Days since start} = \text{Days from 22 September 1792 to} , (Y, M, D) \]

  2. Adjust for Leap Years:

    Add an extra day for each leap year since 1792 in the Gregorian Calendar. This can be calculated as:

    \[ \text{Leap Days} = \left\lfloor \frac{Y - 1}{4} \right\rfloor - \left\lfloor \frac{Y - 1}{100} \right\rfloor + \left\lfloor \frac{Y - 1}{400} \right\rfloor - \left\lfloor \frac{1792}{4} \right\rfloor + \left\lfloor \frac{1792}{100} \right\rfloor - \left\lfloor \frac{1792}{400} \right\rfloor \]

    (Adjust the formula if \( Y, M, D \) is before 29 February in a leap year.)

  3. Determine the Republican Year:

    Find the Republican year and the day of the year. If \( \text{TotalDays} \) is the sum of the days since the start and the leap days:

    \[ \text{Republican Year} = \left\lfloor \frac{\text{TotalDays}}{365} \right\rfloor + 1 \]

    \[ \text{Day of Republican Year} = \text{TotalDays} \mod 365 \]

  4. Convert to Republican Date:

    Use the day of the Republican year to determine the month and day. Each Republican month has 30 days.

    \[ \text{Republican Month} = \left\lfloor \frac{\text{Day of Republican Year}}{30} \right\rfloor + 1 \]

    \[ \text{Republican Day} = (\text{Day of Republican Year} \mod 30) + 1 \]

    Account for the end-of-year days separately (the ‘sansculottides’).

Time Conversions

  1. Convert Traditional Time to Total Seconds: Given a traditional time \( H:M:S \) (Hours:Minutes:Seconds), first convert this time to total seconds: \[ \text{Total Seconds} = H \times 3600 + M \times 60 + S \]

  2. Convert Total Seconds to Decimal Time: A day has 86400 traditional seconds or 100000 decimal seconds. To convert to decimal time: \[ \text{Decimal Seconds} = \text{Total Seconds} \times \frac{100000}{86400} \] Then, break down decimal seconds into decimal hours, minutes, and seconds: \[ \text{Decimal Hours} = \left\lfloor \frac{\text{Decimal Seconds}}{10000} \right\rfloor \] \[ \text{Decimal Minutes} = \left\lfloor \frac{(\text{Decimal Seconds} \mod 10000)}{100} \right\rfloor \] \[ \text{Decimal Seconds Remainder} = \text{Decimal Seconds} \mod 100 \]


/