Timekeeping across a galaxy of planets with different day lengths, year lengths, and calendars is a complex problem. The Planetary Time Code (PTC) system provides a universal standard for recording and converting time between any two locations.
Every inhabited planet rotates at a different speed and orbits its star at a different rate. A "day" on one world might be 18 hours, while another might be 32. A "year" might be 290 days or 520. Months are arbitrary cultural divisions that vary wildly. Without a common standard, coordinating anything across interstellar distances would be impossible.
The PTC system uses UTC (Coordinated Universal Time) as the universal reference:
Commercially and politically significant planets, stations, and installations are assigned a three-letter code (like CAL for Calysto or LDR for L'Dree'll). Each code maps to a PTC Definition String that contains all the parameters needed to convert between UTC and local time.
Only 999 PTC codes are officially registered and maintained. These are reserved for locations of major commercial, political, or navigational importance. The vast majority of inhabited worlds, outposts, and stations do not have registered codes.
For locations without a registered PTC code, timestamps use LOC (local) to indicate local time:
187.412 09:30:00 LOC
A LOC timestamp is only meaningful in context - it tells you the local time at wherever "here" is, but cannot be converted to UTC without knowing the specific location's parameters.
For interstellar use and conversions, timestamps use Day of Year format to avoid the complexity of converting between different month systems:
DDD.YYYY HH:MM:SS CODE
| Component | Description |
|---|---|
DDD |
Day of year (1-365 for UTC, varies for local) |
YYYY |
Year (counted from shared epoch in local year lengths) |
HH:MM:SS |
Time of day (local hours, which may differ from 24) |
CODE |
Three-letter planetary time code (or LOC for unregistered local) |
The same moment in time, expressed in different codes:
328.2691 14:35:00 UTC
187.2382 22:10:45 CAL
Both timestamps refer to the same instant - they just use different units based on each planet's rotation and orbit.
When a calendar with months is defined via the +cal parameter, the traditional day-month-year format is also valid:
24.11.2691 14:35:00 UTC
15.07.2382 22:10:45 CAL
However, much like 24-hour time versus 12-hour time, official and interstellar sources prefer the two-number Day of Year format (DDD.YYYY). The three-number format is primarily used in local contexts where the calendar is well understood by all parties.
All codes share the same epoch (1.1 UTC), but count years in local units. If Calysto's year is shorter than Earth's, more Calysto years will have passed since the epoch than Earth years. The year number differs, but the epoch is universal.
Each planetary code maps to a definition string that contains all conversion parameters. The format is inspired by cartographic projection strings:
+d=DAY_LENGTH +y=YEAR_LENGTH [+e=EPOCH_OFFSET] [+hms=H:M:S] [+cal=CALENDAR] [+leap=RULES]
| Parameter | Required | Description |
|---|---|---|
+d |
Yes | Local day length in UTC hours |
+y |
Yes | Local year length in UTC days |
+e |
No | Epoch offset in UTC years (for stations/colonies founded after 1.1 UTC) |
+hms |
No | Time division as Hours:Minutes:Seconds. Default: round(+d):60:60 |
+cal |
No | Calendar definition (see below) |
+leap |
No | Leap rules (see below) |
If not specified, local hours are derived from day length:
For installations that want non-standard divisions (e.g., decimal time):
+hms=10:100:100
Specifies month definitions. Can be a known calendar name or an inline definition:
+cal=earth-standard
+cal=Aris:34,Ven:35,Ter:33,Qua:34,...
Known calendars:
| Name | Definition |
|---|---|
earth-standard |
January:31, February:28, March:31, April:30, May:31, June:30, July:31, August:31, September:30, October:31, November:30, December:31 |
Specifies periodic adjustments to keep the calendar aligned with the actual orbital period. Format:
+leap=PERIOD_UNIT:ADJUSTMENT_UNIT:TARGET
Units: y (years), m (months), d (days), h (hours), M (minutes), s (seconds)
Examples:
| Rule | Meaning |
|---|---|
+leap=4y:+1d:February |
Every 4 years, add 1 day to February |
+leap=5y:+1d:end |
Every 5 years, add 1 day to the end of the year |
+leap=3d:+1s:end |
Every 3 days, add 1 second |
Earth's leap year rule:
+leap=4y:+1d:February;100y:-1d:February;400y:+1d:February
Rules stack: in year 2000, rule 1 adds a day, rule 2 removes it, rule 3 adds it back resulting in a leap year.
| Code | Body | Definition |
|---|---|---|
| UTC | Earth (reference) | +d=24 +y=365.25 +cal=earth-standard +leap=4y:+1d:February;100y:-1d:February;400y:+1d:February |
| Code | Body | Affiliation | Definition |
|---|---|---|---|
| EAR | Earth (Terra) | Terran Republic | +d=24 +y=365.25 +cal=earth-standard +leap=4y:+1d:February;100y:-1d:February;400y:+1d:February |
| CAL | Calysto | League | TBD |
| NCR | New Corinth | League | TBD |
| ABD | Aberdeen | Confederacy | TBD |
| Code | Body | Affiliation | Definition |
|---|---|---|---|
| LDR | L'Dree'll | Lyndri Empire | TBD |
| NOR | NorAel | Confederacy of Norael | TBD |
| Code | Body | Notes | Definition |
|---|---|---|---|
| CNK | Corona Noir Ki Station | No natural day/year | TBD (likely uses UTC time with local epoch) |
Earth-like habitable planets generally have day lengths in the 16-32 UTC hour range. This means:
| Day Length | Notes |
|---|---|
| Under 16 hours | Extreme. Rapid day/night cycling. |
| 16-32 hours | Comfortable range for human habitation. |
| 32-48 hours | Tolerable with adaptation. |
| Over 48 hours | Difficult. Very long days/nights. |
While the PTC system uses Day of Year format for conversions, local cultures may still use month-based calendars for daily life. These are defined in the +cal parameter but are primarily for local convenience. Interstellar timestamps should use DDD.YYYY format.
Vessels and stations without a natural day/year typically:
+e) based on commissioning dateThe PTC system is inspired by real-world cartographic projection systems (like proj4 strings), which encode complex transformation parameters in compact, machine-readable strings. The same principles apply here: a short code references a full set of parameters that allow conversion between any two coordinate systems - in this case, time systems.
The decision to use Day of Year format (DDD.YYYY) rather than day-month-year (DD.MM.YYYY) was made to simplify conversions. Months are arbitrary cultural divisions that would require complex lookup tables to convert. Day of Year requires only the year length ratio.