Mars is roughly half the size of Earth, spins about its axis at almost the same rotational speed as Earth, orbits the Sun about half-again further out than does Earth, and takes almost twice as long to complete its orbit around the Sun as does Earth.
More accurately:
| Martian synodic rotation period | i.e., it's solar day | 24h:39m:35.244s | 1.02749125 Earth days |
|---|---|---|---|
| Martian sidereal orbital period | i.e., it's year | 668.5991 Mars solar days | 1.88085 Earth years, or 1 Earth year, 320 Earth days, and 18.2 hours |
During the Viking Lander missions in 1976 the term “sol” (Latin for “Sun”) was used for Martian solar days; this usage has been universally adopted in the ensuing decades. There are not yet universally adopted terms for the Martian week, month, or year, nor a universally adopted Martian time system or calendar system.
The Viking, Mars Pathfinder, Mars Exploration Rover, Phoenix, and Mars Science Laboratory missions used timekeeping synchrnozed to the local solar time at the landing locations, i.e. 12:00 noon is determined by the sun being exactly due south (for a landing in the northern hemisphere, due north otherwise). Earth mission control teams have even gone so far as obtaining special wristwatches modified to run 2.7% slower; thereby the teams adjusted their working hours ~40 minutes later each Earth day such that they were always on console during the Martian daytime.
A growing consensus has adopted a Martian prime meridian located in the center of the crater Airy-0 in Terra Meridiani. From this, Coordinated Mars Time (MTC) has been proposed, analogous to Coordinated Universal Time (UTC) on Earth; however Martian MTC does not (yet) incorporate occasional leap seconds as per UTC, so it is presently more closely analogous to Universal Time (UT1) on Earth. The MTC time standard has also been referred to as Airy Mean Time (AMT), analogous to Greenwich Mean Time (GMT) on Earth. As of 2026 no Martian mission has used AMT, MTC, or a related local time system: all have kept time per their respective varying local solar time systems.
There are no generally accepted Martian time zones.
A Mars Sol Date (MSD) analogous to the Earth Julian date has been proposed, with an epoch of 29 December 1873 (the 1877 perihelic opposition, and also coincidentally the birth date of astronomer Carl Otto Lampland).
The landing dates of the Viking probes (the first successful landings on Mars) have been suggested for epochs, however this has not been widely accepted. A more widely accepted epoch is the “Telescopic Epoch”, defined as Earth date 11 March 1609: the Earth calendar date of the Martian vernal equinox in the Earth year 1609, in honor of Johannes Kepler's use of Tycho Brahe's observations of Mars to describe the laws of planetary motion, and Galileo Galilei's first observations of Mars with a telescope.
Many Martian time systems and calendar systems have been proposed in both works of fiction and the technical community. The two most prominent are the Darian Calendar and the Utopian Calendar. Both calendars use the Telescopic Epoch (TE) for the year, and divide the Martian year into 24 months of 27 or 28 days in length. The two calendars differ primarily in nomenclature.
The Darian Calendar divides the Martian year into 24 months, in 4 quarters of six months each. The first 5 months of each quarter have 28 sols, and the final month of the quarter 27 sols. The final sol of the year is the leap sol, therefore the final month of the year may have 27 or 28 sols. The calendar continues the use of a seven-sol week, however one peculiarity of the Darian Calendar is the week resets on the 1st of each month. This produces monthly calendar pages of exactly 4 full weeks of 7 days in most months; the 6th, 12th, 18th and possibly 24th months are missing the final day in the lower right corner of the 4×7 calendar grid. In the latter cases, this has the side effect of producing a one-sol weekend at the end of each quarter, excepting the final weekend of a leap year. Most Martian years are leap years: approximately 6 out of 10.
The Darien Calendar names the months with Latin names of the constellations of the zodiac, alternating with their Sanskrit equivalents. The days of the week are named per the Romance language Earth weekday names per the Sun, Moon and planets: Sol Solis, Sol Lunae, Sol Martis, Sol Mercurii, Sol Jovis, Sol Veneris, and Sol Saturni. The Utopian Calendar names the months per 24 classical constellations involving real or mythological animals, in approximate order of their right ascension, i.e. the east-west location of the constellations in the sky.
Many revisions to these systems as well as additional systems have been proposed, all without clear consensus. Naturally therefore I will make the problem worse by creating my own system, adopting various existing elements and modifying as I see fit.
The time and calendar systems will follow from these theses:
It therefore follows:
We are not redefining the fundamental units of time (…and thus the fundamental empirical physical constants of the universe?…Newtonian and Keplerian mechanics?…and therefore the math in your ship's guidance system?…the tuning of music?…). This leads to madness.
Therefore:
No “Martian hour” 2.7% longer than Earth, redefining seconds and minutes. Throw the deliberately broken watches into the wastebin. They will be replaced with clocks that count past 23:59:59 through 24:00:00 right on to 24:39:35.243 before rolling over to 00:00:00. (I will leave the dilemma of analog watches to the watchmakers, however note the historical Jet Propulsion Laboratory “slow watches” are not correct.)
The concept of time is the basis of reality. The words to describe this would be among the very first words
developed by a culture: they would be small, unique, monosyllabic, evocative, relevant, and easy to speak.
(And they are needed for writing software: std::chrono::year_month_day becomes marstime::?_?_?)
| small, monosyllabic, easy to speak | year, month, day, week |
|---|---|
| unique | Do you mean: Our days, or the lander's days? Our years, or their years? |
| evocative, relevant | Sunday: the biggest object in the sky. Monday: the secondmost. Month: its motion. |
Sol was needed, therefore sol was created, sol satisfied (b), therefore sol has stuck, and we will keep it. Now we need the rest of the set:
| Not “Martian vernal equinox year” | verx | …by linguistic erosion to its smallest unique grain |
|---|---|---|
| Not (our? / their?) “month” | monx | …by similitude to verx, and also month, and also mons: the most iconic features of Mars |
| Not (our? / their?) “week” | wox | …again by similitude |
We construct the plurals by appending “-en”. This is Germanic, the root of English, and still lives on in e.g. ox → oxen. Thus these words spring into existence already comfortably weathered by a millenium of culture, like buying a brand new pair of stonewashed jeans.
Restarting woxsols monxly pleases only the calendar's creator and print shop; 1-sol woxends infuriate everyone. Therefore woxsols will run concurrently, adding chaos to the calendar pages, as per Earth. (Honestly I think people prefer the gamble of a 3-sol holiday woxend, or an occasional Jovisol the 13th.)
Naming monxen alternating zodiac names, and their Sanskrit equivalents, is odd: of what relevance to Mars is a 12-cycle awkwardly grafted into its calendar? These are terrestrial cultural artifacts that ultimately trace to Earth's Moon, not Mars' moons.
Therefore, we use the Utopian monx names. Camelopardalis is absurdly polysylablic but useful for hazing schoolchilds (sic, to finish that argument). Also, the Utopian names are way cooler. Finally, using the Utopian monx names results in 36 distinct constellations for the complete set of Earth months and Mars monxen.
Sol Solis, Sol Lunae, Sol Martis, Sol Mercurii, Sol Jovis, Sol Veneris, Sol Saturni: Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn? You're honoring the Moon—only barely visible to the naked eye in ideal conditions? But ignoring Earth? You're honoring Mars—does a fish honor water? But ignoring it's extremely bright moons, right in your face? Again, this is Earth culture awkwardly and pointlessly copy / pasted into Mars. Also: too many words, not linguistically eroded to their grains.
Therefore: Solisol, Phobosol, Deimosol, Terrasol, Venusol, Jovisol, Satursol—appropriate to the sky as seen on Mars and pared down to their lingual atoms. This is the result not of pointlessly grafting Earth weekdays onto Mars, but rather applying the same cultural and liguistic processes that produced Earth's weekdays, to the reality of Mars.
In summary:
| Earth | Number of Days | Mars | Number of Sols | Notes |
|---|---|---|---|---|
| year / years | 365 or 366 days | verx / verxen | 668 or 669 sols | from “Vernal Equinox Year” |
| month / months | 28-31 days | monx / monxen | 27 or 28 sols | from Latin “mensis”, “mons” altered with similitude to verx |
| week / weeks | 7 days | wox / woxen | 7 sols | “week” altered with similitude to “verx” and “monx” |
| weekday | 5 days | woxsol | 5 sols | |
| workday | 5 days | worksol | 5 sols | |
| weekend | 2 days | woxend | 2 sols | |
| day | sol | |||
| today | tosol | |||
| tomorrow | morrowsol | |||
| yesterday | yestersol | |||
| holiday | holisol |
Sols of the wox:
| Index | Weekday | Woxsol | Notes |
|---|---|---|---|
| 0 | Sunday | Solisol | brightest object in sky |
| 1 | Monday | Phobosol | second brightest object in sky |
| 2 | Tuesday | Deimosol | third brightest object in sky |
| 3 | Wednesday | Terrasol | most culturally significant object in sky—ancestral home, Mother and Child |
| 4 | Thursday | Venusol | fourth brightest object in sky |
| 5 | Friday | Jovisol | fifth brightest object in sky |
| 6 | Saturday | Satursol | sixth brightest object in sky (excluding Earth and Sirius) |
Monxen:
| Index | Month | Days | Monx | Sols |
|---|---|---|---|---|
| 1 | January | 31 | Phoenix | 28 |
| 2 | February | 28 or 29 | Cetus | 28 |
| 3 | March | 31 | Dorado | 28 |
| 4 | April | 30 | Lepus | 28 |
| 5 | May | 31 | Columba | 28 |
| 6 | June | 30 | Monoceros | 27 |
| 7 | July | 31 | Volans | 28 |
| 8 | August | 31 | Lynx | 28 |
| 9 | September | 30 | Camelopardalis | 28 |
| 10 | October | 31 | Chamaeleon | 28 |
| 11 | November | 30 | Hydra | 28 |
| 12 | December | 31 | Corvus | 27 |
| 13 | Centaurus | 28 | ||
| 14 | Draco | 28 | ||
| 15 | Lupus | 28 | ||
| 16 | Apus | 28 | ||
| 17 | Pavo | 28 | ||
| 18 | Aquila | 27 | ||
| 19 | Vulpecula | 28 | ||
| 20 | Cygnus | 28 | ||
| 21 | Delphinus | 28 | ||
| 22 | Grus | 28 | ||
| 23 | Pegasus | 28 | ||
| 24 | Tucana | 27 or 28 |
[Indices (← another irregular ‘x’ plural! OK I'll stop now.) refer to std::chrono::weekday, std::chrono::month and
marstime::woxsol, marstime::monx.]
This is the northern vernal equinox on March 11, 1609, the Gregorian year delineating when Mars transitioned from the classical era to modern era relevance.
Verxen after the Telescopic Epoch will be denoted “TE”, i.e. the current verx 221 TE. Prior verxen will be BTE.
Which brings us to…
The appropriate methodology of creating Martian time zones is: ask Grok. This honors Heinlein and his writings of Mars and AI. In particular in The Moon is a Harsh Mistress, Heinlein creates a character “Mike”, a helpful AI with a love of jokes, who assists the off-world colonists. Accordingly, when prompted to create Martian time zones named for “most interesting geological feature within, or most prominent in, its longitudinal range”, Grok created a nice set of zones, 3 of which abbreviate as ARS, TIT, and SIN. Well played, Grok. (Fortunately CHAPEA is in BEL, Belva Time.)
| Zone | Abbreviation | Longitude | MTC Offset | Eponym | Grok's Notes |
|---|---|---|---|---|---|
| Airy Mean Time | AMT | 0°E | 0h | Airy-0 Crater (~5°S, 0°E) | The prime meridian marker, a small but defining crater. |
| Elysium Time | ELY | 15°E | +1h | Elysium Mons (~25°N, 14°E) | Major shield volcano in the Elysium region. |
| Hecates Time | HEC | 30°E | +2h | Hecates Tholus (~32°N, 33°E) | Smaller volcano near Elysium. |
| Noachis Time | NOA | 45°E | +3h | Noachis Terra (~45°S, 45°E) | Vast, ancient cratered highlands. |
| Argyre Time | ARG | 60°E | +4h | Argyre Planitia (~50°S, 60°E) | Massive southern impact basin. |
| Belva Time | BEL | 75°E | +5h | Belva Crater (~18°N, 77.4°E) | Site of first human habitation of Mars. |
| Isidis Time | ISI | 90°E | +6h | Isidis Planitia (~13°N, 87°E) | Large, flat basin with water evidence. |
| Syrtis Time | SYR | 105°E | +7h | Syrtis Major Planum (~10°N, 105°E) | Dark volcanic plateau, visible from Earth. |
| Nili Time | NIL | 120°E | +8h | Nili Patera (~9°N, 122°E) | Volcanic caldera in Syrtis Major. |
| Olympus Time | OLY | 135°E | +9h | Olympus Mons (~18°N, 134°E) | Largest volcano in the solar system. |
| Ascraeus Time | ASC | 150°E | +10h | Ascraeus Mons (~11°N, 152°E) | One of the Tharsis Montes trio. |
| Pavonis Time | PAV | 165°E | +11h | Pavonis Mons (~0°N, 165°E) | Central Tharsis volcano, near equator. |
| Arsia Time | ARS | 180°E | +12h | Arsia Mons (~9°S, 180°E) | Southernmost Tharsis volcano. |
| Noctis Time | NOC | 195°E | +13h | Noctis Labyrinthus (~7°S, 195°E) | Maze-like troughs west of Valles Marineris. |
| Candor Time | CAN | 210°E | +14h | Candor Chasma (~7°S, 210°E) | Deep canyon in Valles Marineris. |
| Coprates Time | COP | 225°E | +15h | Coprates Chasma (~13°S, 225°E) | Major segment of Valles Marineris. |
| Tithonium Time | TIT | 240°E | +16h | Tithonium Chasma (~4°S, 245°E) | Northern Valles Marineris canyon. |
| Ius Time | IUS | 255°E | +17h | Ius Chasma (~7°S, 255°E) | Western Valles Marineris feature. |
| Alba Time | ALB | 270°E | +18h | Alba Mons (~40°N, 270°E) | Largest volcano by area, northern plains. |
| Tempe Time | TEM | 285°E | +19h | Tempe Terra (~40°N, 290°E) | Highland region with tectonic features. |
| Kasei Time | KAS | 300°E | +20h | Kasei Valles (~25°N, 305°E) | Massive outflow channel. |
| Lunae Time | LUN | 315°E | +21h | Lunae Planum (~10°N, 315°E) | Plateau near Kasei Valles. |
| Sinus Time | SIN | 330°E | +22h | Sinus Sabaeus (~5°S, 330°E) | Dark, cratered region. |
| Schiaparelli Time | SCH | 345°E | +23h | Schiaparelli Crater (~3°S, 343°E) | Large, historic crater near 0°E meridian. |
Note that dividing Mars into 24 time zones, spaced at 15° longitudes per Earth practice, means that each time zone is effectively 24h:39m:35.244s / 24 ≈ 1h:01m:39s “wide”. In practice this means as we travel around Mars, by the time we get to the SCH time zone, solar noon (sun directly due south / north) may occur 40 minutes offset from clock noon, with respect to the comparable situation in the AMT time zone. Given that Mars' orbit is ∼5× more eccentric than Earth's, the Martian Equation of Time (i.e. the analemma) illustrates the solar position versus clock time varies by up to ±40-50 minutes (pace ±14-16 minutes for Earth); adding ±20 minutes of “time zone inaccuracy” to that seems acceptable. If solar noon is within an hour of clock noon, that's good enough for government work. The alternative solution of having 24 “narrow” time zones and a 25th ∼40-minute “sliver” timezone is quite a bit uglier.
We're not screwing up a second planet.
Class marstime::mission_time is a representation of a timekeeping system relevant to a simulated Mars mission.
The class data and constructors define the mission parameters: ingress / egress dates, mission duration, Earth
and Mars time zones, and how the Mars timekeeping system works—is it “faked” (just an alias to Earth local
time), or is it (for part or all of the mission) representing actual Mars time with Martian sol durations.
The relevant members and structures are intended for use in various “clock” applications—breaking down time (in the Earth or Mars time system) into hh:mm:ss values to display in a digital clock, with possibly milliseconds as well to be displayed on a “high precision” clocks. In addition broken down time includes year / month / day / weekday Earth date values to display on clocks, verx / monx / sol / woxsol Mars date valuse to display on clocks, and mission day or sol values (“mission day 12”, “mission sol 23”, “14 sols till egress”, etc.).
This timekeeping system is not based on any official Mars timekeeping system (there isn't any), but rather one created for the needs of the CHAPEA Mars simulation. This includes the ability to use Mars time based on Mars sols (Martian days, 24h:39m:35s:244ms, or rounded to 24h:40m:00s if you're basic 🙄) for none, part, or all of the mission. In the parts of the mission when Mars sols aren't used, the “Mars time” provided by this system is simply copying local Earth time.
The point in time when the Earth and Mars mission clocks are synchronized is sync_point. At this time point both
the local Earth and local Mars clocks are 00:00:00; the mission_sol is defined as equal to that day's mission_day;
and Mars time and mission sols are calculated forwards and backwards from this point in time. Finally, the Martian
monx (month) number, sol of monx (day of month, if possible) number, and woxsol number (weekday number) are
defined as equal to the Earth calendar values at the sync point. The Martian year is taken from the Telescopic
Epoch starting in the Earth year 1609. Note that this will produce continuity at the sync point of Earth / Mars
month / monx, day of month / sol monx, weekday / woxsol, and time of day / sol; however the year / verx will jump
(and possibly the month / monx and day / sol, if Earth calendar day > 27 or 28). Regardless of whether Mars time is
“real” or “faked” Martian month and weekday names are used.
There are 4 sync_type modes: before, after, always, and never,
indicating when Mars time is based actual Martian sols, rather than simply copying Earth time.
before Before the sync_point, Mars time / sols are calculated by sol durations. After the sync_point, Mars
time / sols are an alias of Earth time / days. after Before the sync_point, Mars time / sols are an alias of Earth time / days. After the sync_point, Mars
time / sols are calculated by sol durations.always Mars time / sols are always calculated by sol durations.never Mars time / sols are always an alias of Earth time / days, in other words Mars time / sols are “fake” and
simply Earth time / days.Note that this calendar is constructed with an effective behavior of always, for simplicity's and clarity's sake, however the
dropd daemon will neccesarily run with the correct after behavior to properly drop large files during the
crew's nights, throughout the entire mission.
Mission days are calculated as follows, for the example of a mission ingress of October 19, 2025, 17:00 CDT, and duration of 377 days:
| Time Point | Mission Day | Written | Spoken | Notes |
|---|---|---|---|---|
| morning of October 18, 2025 | -1 | I-1d | “ingress minus one day” | even though this is more than 24 hours before ingress |
| evening of October 18, 2025 | -1 | I-1d | “ingress minus one day” | even though this is less than 24 hours to ingress |
| morning of October 19, 2025 | 0 | d0 | “mission day 0” | even prior to ingress |
| evening of October 19, 2025 | 0 | d0 | “mission day 0” | not the first full day in mission, therefore nonworking MD 0 |
| morning of October 20, 2025 | 1 | d1 | “mission day 1” | First full day; even prior to 24 hours in mission |
| evening of October 20, 2025 | 1 | d1 | “mission day 1” | even after more than 24 hours in mission |
| … | ||||
| morning of October 31, 2026 | 377 | d377 | “mission day 377” | even though this day will not be completed in mission |
| evening of October 31, 2026 | 377 | d377 | “mission day 377” | even though mission is over |
| morning of November 1, 2026 | 378 | E+1d | “egress plus one day” | even though less than a full 24 hours have passed |
| evening of November 1, 2026 | 378 | E+1d | “egress plus one day” | even though more than a full 24 hours have passed |
Noting that:
std::chrono::month and std::chrono::day are indexed 1-based (i.e January first is month[1], day[1]).
However, weekdays are 0-based (i.e. Sunday, the first day of the week, is weekday[0]). The Mars
monx / sol / woxsol system is consistent with this.
Given:
ingress The mission ingress time (local Earth std::chrono::zoned_time, including time zone)
e.g. October 19, 2025 17:00:00 Houston CDT → 2025-10-19 22:00:00 UTCmission_duration The mission duration e.g. 377 dayssync_date The synchronization date (local Earth time std::chrono::year_month_day) on which Earth and Mars synchronize at
local Earth / Mars 00:00:00 e.g. September 24, 2025sync_type The Mars time synchronization behavior e.g. marstime::sync_types::afterearth_time_zone The Earth local time zone, extracted from the zoned_time value of ingress, above
e.g. std::chrono::tzdb::locate_zone("America/Chicago")mars_time_zone The Mars local time zone e.g. marstime::zones::BELDetermine:
egress The mission egress time (std::chrono::zoned_time, including the local Earth time zone) mission_day_epoch The time point from which mission days are calculated (local Earth time std::chrono::year_month_day
calendar date) mission_sol_epoch The time point from which mission sols and time of sol are calculated (UTC time) mars_epoch The time point from which Martian verx, monx, and sol are calculated (UTC time) mars_epoch_woxsol The Mars woxsol of the mars_epoch, chosen to produce continuity of Earth weekday / Mars
woxsol at sync_dateWe modify the Darien calendar to enable weekday / woxsol continuity: at the Mars epoch (mars_epoch, in UTC) the
woxsol at marstime::verx_monx_sol{0_verx/1/1} is defined as mars_epoch_woxsol. Thereafter, the woxsol increments daily
without discontinuity, producing the same varying-starting-woxsol in Martian monxen as per Earth varying weekdays
starting its Gregorian months.
The mars_epoch is constructed / adjusted to produce a Martian date at sync_point, with a verx calculated from the
Telescopic Epoch and the monx and sol chosen to match the Earth local time month and day numbers at sync_date,
if possible. Earth months may have 28, 29, 30, or 31 days; Mars monxen only have 27 or 28 days. If sync_date
occurs on the 29th, 30th, 31st, and possibly 28th of the Earth month, we abandon pretense of month / monx day / sol
continuity and simply count forward the required number of days, e.g. if sync_date is January 31st, the Martian
calendar date will be Cetus 3rd.
The mars_epoch is back-calculated from this Martian marstime::verx_monx_sol{verx/monx/sol} + 0h. The mars_epoch_woxsol is
chosen to produce a wosxol at sync_date matching the Earth local time weekday, likewise back-calculating to the
required woxsol at the epoch (i.e. a Sunday sync_date becomes Solisol at sync_date). In other words, there are 2
degrees of freedom: mars_epoch and mars_epoch_woxsol. These are back-calculated from matching (month, day) to
(monx, sol) and (weekday) to (woxsol) respectively; verx is selected per the Telescopic Epoch to give it the
correct-ish value.
This produces continuity in month / monx, day / sol, and weekday / woxsol through the calendar transition (although the year / verx will jump from AD to TE), and continuity in time through the first sol, until sol time 24:00:00 at which point the Earth and Mars local clock times begin to diverge. Importantly, the crew will not loose a weekend, or gain a 4-day weekend at the transition; both their sleeping and working / time off schedule will continue smoothly.
Depending on whether the conditional compilation constant #define USE_APPROXIMATE_SOLS is defined, the marstime library
either calculates Martian time with 24h:40m sols and 1-second precision; or 24h:39m:35.244s sols with millisecond precision.
Congratulations, you are now a member of my cult. We meet on the second Deimosol of each monx, bring an hors d'œuvre or some alcohol. Remember, Earth laws only apply 24/7.