Brainstorming multiple calendars

I have been thinking about a concept for implementing multiple calendars, such as might be needed in a SCI-FI novel that takes place in two (or more) worlds. I came up with a concept that I hope is worth sharing:

Initially, I was trying to think how to design a system where any event occupying a date/time in Calendar A would tie to the equivalent date/time in Calendar B. So something at, say, 1 January 2025 on Earth would be, say, 4 Aardvark 5003 on Planet X. That seemed daunting because the developer, as stated by @Peter_T here, would have to develop an algorithm to tie the two calendars together–hard enough with known calendars but, I imagine, even harder with user-defined calendars.

That’s when I got an idea. Suppose AT allowed the creation of two or more custom calendars that are not programmatically connected except at the display level. A user could create two custom calendars (or use a default calendar and one custom calendar). In Calendar A, the user would designate a date/time; in Calendar B, the user would designate a date/time that is its equivalent. The user would then define a second, later date/time in Calendar A and define its equivalent in Calendar B. This would create a ratio between the two calendars, granular enough to account for, say, different planetary rotation speeds.

Here is the key concept: This ratio could then adjust the display between the two calendars so that there would be a visual way to see how an event in one calendar relates to the other. In other words, the visual scale of the calendars would be adjusted according to the ratio so that an event in one calendar would be visually adjacent to that date/time in the other. Scrolling/zooming could be tied so that scrolling/zooming one calendar would scroll the other according to the ratio.

This would work with more than two calendars, as well.

My coding days are well past, so I defer to @Peter_T and others who are more current in the realities of implementing something like this. However, wouldn’t this approach be considerably easier to implement than creating complex algorithms that more directly tie the calendars?

That sounds quite simple. However, if you want to display the two time axes together, you need to know the conversion ratio you described above, i.e. the calendars are in any case programmatically linked in order be able to get the appropriate numbers of screen pixels.

So you may first have to work out how many “Planet X seconds” (or whatever you like to name the unit of your fictional timestamp) there are between “4 Aardvark 5003, 00:00” and “78 Coati 6007, 233:77” (which is February 29, 2029, 00:00), then the rest will be easy. In any case, this could be entered via a quite simple user dialog.

By the way, this makes me wonder how all the complicated conversion formulas come about, just think of the cycles of Jupiter’s moons.

Well, my math lessons were a while ago, but I think the complicated calculation is up to the user, who has to work out the right conversion ratio in advance (1). On the other hand, that would be fine for a pure fantasy calendar, where nobody is likely to be bothered by the linear approximation and the offset errors that accumulate over longer periods of time due to astronomical irregularities.

The only question is how many users will actually go through with it before the first one comes along and says “But in my world, the days of the week are counted backwards in the last month of every thirteenth year unless the seventh moon is full and the Planet Gora is in the House of the Sloth” :thinking:

Cheers,
Peter


(1)
t2(t1) = t2ref + t1 · Δt2 / Δt1

1 Like

I have been trying to come with a way that the user merely has to enter the particulars of each world’s system and then AT does that calculation for the ratio.

I gave it a shot in a posting just now, but then saw the flaw in my thinking, so I deleted it. So far, I cannot escape the requirement that the user must do some calculation work outside of AT. Maybe something useful will present itself. :slight_smile:

You’re basically right: Most of the math can be done by the software. The conversion is really simple as long as we assume a linear relationship between the progression of time, e.g. on Earth, and our fictional planet X.

However, as the two zero points (1-01-01, 00:00) do not coincide and the units of the time stamps are also different, the user must enter two base points so that the program can map the two calendars to each other.

The user must therefore enter at least three date/time values:

  • tx0 = date/time on planet X, on January 1 in year 1, 00:00 on Earth
  • te1 = any date/time on Earth
  • tx1 = the corresponding date/time on planet X

20250314_175225

In any case, the user cannot avoid determining these reference points. But with a purely fictional calendar, you can of course take the easy way out.

The ingenious thing about it, of course, is that it could be realized with a very simple user interface.

1 Like

Makes perfect sense. Nicely done.

Thank you. To come back to my suggestion in the other thread, you could of course program a nice tool yourself to calculate the fictional date/time, which would then be entered as properties of the events in AT.

The actual work would be in defining the different calendars and converting the date/time information into the respective timestamps. There are convenient standard library functions for the Gregorian calendar, but these do not usually work for negative dates. So you would have to put a bit of brainpower into it. Would be a nice exercise for a programming course, wouldn’t it?

1 Like

Sooooo tempting! Alas, I have to keep my focus on writing my manuscript.

That’s right. Enough of procrastinating. Back to the essential work!

1 Like