This is a fan creation based on assumptions detailed below, and in this YouTube video. This represents a "best attempt" to produce something that (almost) never contradicts available lore, while still taking to account common date-keeping wrinkles like Leap Years. Results may not correspond to future published CIG dates.
SEY = Standard Earth Year. Years are CE unless stated to be BCE. All times are stated in Standard Earth Time (SET), which is represented as equal to Coordinated Universal Time (UTC).
MXY = Modern Xi'an Year, which is 1.28 times as long as a Standard Earth Year. For divisions of the year more precise than a whole year, two Date Display Format modes are available - an exactly precise percentage progress model, or an experimental Date Code model (see Basic User Guide for details).
One published date indicates the existence of a Pre-Imperial Age. There are multiple potential start dates for this Age. This calculator has selected the most likely date Lore Nerd Guide for details), or the hypothetical Age can be ignored in results via the mode switch below.
Note: these settings allow you to override the underpinning assumptions of the calendar. Changing these values may cause the calculator to give results that no longer support the published calendar dates. You must click Update Calendar to apply your changes.
BCE Date Format
This setting influences the presumed format of all input and displayed BCE years.
Age Lengths
Provide the number of Xi'an Years between the start of the age, and the start of the next age.
To use the calculators, simply enter the desired Standard Earth Year date and time, or Modern Xi'an year as numbers into the relevant field, and click the calculate button. If you do not fill all of the fields, the result will be the range encompassing the entirety of the date requested.
For Human dates, if you don't provide a month, the day field will be ignored, and if you don't provide a day, the hour field will be ignored.
If you input something that can't represent a date as numbers, you will see "Invalid DateTime" and "NaN" a lot. For example, if you ask it to calculate 01/01/2024 00:00 it will work, but asking it to calculate First/Jan/Twentyfour won't, because it cannot parse text.
Dates and times that do not exist will give the same error. For example, while there is a 29th February 2024, there is no 29th February 2954. If you happen to visit this site on a Leap Day, the header date will simply display March 1st a "day early". For the same reason, asking for other impossible dates and times like 27 o'clock or the 32nd of December will also throw an error.
The most likely source of discrepancy between this calculator and dates calculated by any other method (including CIG's internal methods) is Leap Days This is explored further in the Tech section below.
Because there is no published official way to express a Xi'an date more precisely than a year, the default mode for this calendar is just to consider percentage process through Xi'an years as specific, discrete points.
Two Xi'an dates have been published with greater precision than a year: July 4th 1457 is III.0.3 and July 5th 2793 is III.1044.08. At time of writing, there's not an official way to "read" those dates, but I interpret these as decimal fractions, provided only with sufficient precision to clarify an appropriate range, and rounded down. If this assumption is correct, than III.0.3 would correspond to the just under 47 days starting from 30% through the year III.0, while III.1044.08 would correspond to the just under 5 days starting from 8% through year III.1044. Because this is an assumption, and not an official reading, I have provided this mode as the non-default option.
In either mode, if there is nothing in the "Timepoint" box when converting a Xi'an Date to a Human Date, the range for the year will be calculated. In the default percentage mode, a number entered into the progress box will be assumed to implicitly include Leading Zeroes, and the precise corresponding moment calculated. In the experimental Date Code mode, the number of digits entered will be considered indicative of the level of precision, and a corresponding date range calculated.
From this the start points of the other Imperial Ages were calculated as Human Dates. After that point, it is merely a matter of expressing the time relative to those Age transitions as either an interval formatted as a Xi'an date, or adding that interval to the Age Start Point to get a Human Date.
A couple of other assumptions/observations are necessary to make things work. These assumptions all affect dates prior to the start of the Third Imperial Age, and is part of the reason why dates before this point are more likely to be "incorrect" and not match future CIG publications than years after it.
First, it assumed by default that there are no partial years and that the transitions between Imperial Ages occur at the transition of a calendar year. This is indicated by the fact that the event that starts the Third Imperial Age - the coronation of the first Kr.ē emperor, occurs at III.0.3 during the year III.0. This event is also described as the point where they "officially entered" the Third Age. Notably, that article has been updated several times to change the year from 501 CE to 1377 CE and finally to 1457 CE, implying that it is being kept up to date. That suggests that the change of Imperial Age caused by the coronation is "back-dated" to the previous New Year. This can be modified in the advenaced settings,
It's stated that the Third Era began "in II.1824". This is a somewhat ambiguous phrase - it could mean that (A) III.0 and II.1824 are two names for the same year which was then renamed upon the coronation in III.0.3, (B) that III.0 began at the end of II.1824, or (C) that III.0.00 falls somewhere within II.1824. As suggested in the paragraph above, option C is not very likely. Therefore it comes down to calculation: the dates of the Second Age fit the calendar if we take option B (see also my video and the "Year Zeroes" section in the Extreme Nerd Guide if you really want to get into the nitty gritty), and not if we take option A. Therefore, II.1824 is the year that precedes III.0.
Conversely, if we complete the same exercise with the Age Transition of the First Era to the Second, the dates only fit if I.14680 does overlap II.0, implying that the last Ru'a Emperor shared the year of his abdication with the coronation of the first Xy.ō Emperor.
A date "fits" with this calendar if some point of the stated SEY date overlaps with some point of the stated MXY date. At time of writing only two published dates do not "fit" with this timeline - the date of the Ē'aluth system, which appears to be a typo, and the date given in the Nox brochure, which is an older publication that will not be updated to the current system.
A Standard Earth Year's "best match" is the Xi'an year with which it shares the greatest overlap. A Modern Xi'an Year's "best fit" is the Standard Earth Year that shares the greatest overlap with it. These will not always be entirely reciprocal. There are four dates in the Canonical Source Table (below) where the Xi'an and Human dates "fit", but neither date is the other's "best match".
Until December 2023, there were only 3 known eras of the Xi'an Calendar - The First, Second, and Third Imperial Ages, with the first year of each expressed as I.0, II.0 and III.0 respectively. Dates prior to I.0 had only been expressed as SEY dates with no Xi'an equivalent.
In December 2023, the Galactapedia page on the Quantum Drive, which had previously just said "SEY 25343 BCE" was amended to include a Xi'an date of MXY 0.5171. As this is not 5171 Xi'an Years before I.0, appears to be counting up from a newly defined 0.0 year.
This "Pre-Imperial Age" has not been defined in any other way, but is presumed to be the calendar of the Xi'an prior to their departure from RyiXy'an, and thus keep to the same conventions. By default, this hypothetical age is included in this calculator, but can be ignored in the settings. The Pre-Imperial Age has two potential start points that would allow MXY 0.5171 and SEY 25343 BCE to overlap: it could start either 9604 or 9605 Xi'an Years prior to the start of I.0. The former is used because this provides the better overlap between MXY 0.5171 and SEY 25343.
The other new element of Lore from December 2023 was that the 4th Edition of the Xi'an Language Guide implies that The Dark - the Civil War at the end of the Second Age - can be considered an Age in its own right, or in parallel with the Second Age. Currently, this is not represented in the calculator, but will likely be added as an additional option in a future version if we see dates during The Dark being represented in a distinct fashion.
Perhaps controversially I have asserted with this calendar that Standard Earth Time is equivalent to UTC, rather than New York Time, which it is often said to be. The fact is that I cannot find any source for that claim - meanwhile if you go in-game, the 300i's clock operates on UTC, so I believe this is a better assumption currently. Fortunately, I have built the calculator so that changing this is a simple one-line modification, and in the meantime if you believe that Standard Earth Time is New York Time, just change it relative to UTC.
The Gregorian Calendar does not include a Year Zero: 1 BCE is followed by 1 CE. The ISO 8601 international standard for dates and times does include a Year Zero: the Gregorian Year 1 BCE is instead considered 0 CE, Gregorian Year 2 BCE is considered 1 BCE, and so on: BCE dates in ISO 8601 refer to dates one year later than the years with the same name in the Gregorian Calendar.
If you do a naïve whole-number calculation that spans the transition from BCE to CE, you will get a number that conforms to the ISO 8601 standard. For example, if you calculate 20 years prior to 10 CE by the sum 10-20 = -10, the answer 10 BCE would be correct for the ISO 8601 standard. To change this to the Gregorian Calendar, you must increase the magnitude by 1, to get 11 BCE.
How this relates to our problem
As discussed in the Lore Nerd section, there's an ambiguity on how the Second Age connects to the Third Age. This can be expressed as it not being clear whether the length of the Second Age (up to III.0) is meant to be 1824 years, 1825 years, or some value in between. As the Second Age spans the BCE/CE boundary, the difference between the Gregorian and ISO 8601 presents a second ambiguity - do BCE dates apply the Gregorian Correction, or not?
However, if you constrain yourself to these options, no whole-year option really works. No matter what combination of the Second Age length and BCE correction, at least one date either doesn't fits or fits extremely poorly.
The Answers
One solution is instead to assume that a mistake was made, and the Gregorian Correction applied in the wrong direction - a very easy and simple mistake to make when dealing with Dates. If we make that assumption, the dates of all Pre-Third Age dates fit perfectly: better in fact than Third Era dates, with every year matching its best fit year.
The consequence of this is that the SEY calendar has both a 0 CE and a 0 BCE - you can put year "negative zero" into this calculator.
The other solution is to assume that era changeovers force a New Year midway through the year. I have not adopted this as the default, because it overrides the assumption of whole years, and doesn't provide a singular calculator to work with, giving instead a range of lengths that could conceivably fit all dates. Nonetheless, the Advanced Settings will allow you to play with these options.
This page makes use of the Luxon library for converting Javascript Date objects into specific timezones. In brief, when converting a Human Date to a Xi'an date, the user input is parsed as a Luxon DateTime object (i.e. a number of milliseconds relative to the Unix Epoch), compared to further DateTime objects corresponding to the Xi'an Age Start Points, and the difference in milliseconds converted to a number of Xi'an years calculated relative to the preceding Age Start Point.
Conversely, when calculating from Xi'an Dates to Standard Earth Year dates, the duration of elapsed time relative to the corresponding Age Start Points is calculated, added to the Age Start Point, and the resulting Date object expressed as a nicely formated SEY Date and Time.
A Human year is represented as 365.24219 periods of 24 Hours (60x60 SI seconds), and a Xi'an year is represented as 1.28 x a Human Year. This is based on the average length of a true year.
My approach of representing a year as the average length is inherently the source of much of the discrepancy with other methods. In normal circumstances, when one "adds a year" to any date, they are likely just increasing by 365 days, or 366 if it is a Leap year. My implementation "adds a Human year" by adding the equivalent of 365.24219 days in milliseconds to the starting timepoint, and "adds a Xi'an year" by adding the equivalent of 1.28 x 365.24219 days in milliseconds to the starting timepoint. This will differ by a day or two compared to a method that handles Leap Days differently, or ignores them.
The alternative to this method is to work in terms of whole year numbers and to assume that Xi'an Years have 24-hour Leap periods at the same intervals as Human Years, which is not desirable. Therefore, I stand by my approach as the better method.
The other problem with Leap Days is how CIG might handle them. Star Citizen dates are the current date and time +930 years. This means that Leap Years do not fall at the same time: e.g. 2024 is a Leap Year, 2954 would not be. There has never been an in-lore event that fell on 29th February, and currently the calendar is not represented in game, so it's not clear how this will be addressed.
The most likely answer is the easiest - they will just observe leap days at the same timepoint as the real world, creating the implication that the system of deploying leap days has changed. This is actually fairly realistic, as the Leap Second is to be abolished by 2035, and altering the deployment of Leap Days is one solution for replacing it.
Presently, the calculator assumes that Leap Days will continue to fall as currently planned - if this changes in CIG's Lore, I will consider modifications to fit it.
Standard Earth Year dates and Standard Earth Times shown here are all calculated from UTC as stored on the IANA database. This means that the further back in time one goes, the more the minutes and seconds will "drift" relative to a more naïve calculation of simply changing the years, as the database takes into account historical leap seconds and time zone adjustments.
Conversely, the further into the future one goes, there will be no apparent drift in calculated dates - though in a sense, this is less accurate as leap Seconds are announced as-and-when needed and so cannot be predicted in advance as I explored on Twitter. This also means that over time, a date calculated today will become less accurate over time as leap seconds are added between that date and the Epoch.
This isn't really desired behaviour, as I doubt this is taken into account by any less anal calculation, and so will probably not exactly match a more practical/simple calculation. However, this implementation does take into account leap days or Daylight Savings, which is desired behaviour, so I have accepted that a drift of a few apparent minutes and seconds for centuries in the past is not important compared to keeping other things simple. While SET/UTC does not observe DST, I originally built this tool around the New York time zone in the mistaken belief that this was the proper SET time zone, and I want to leave the option open to use other time zones if I like.
In practice, this doesn't really matter except in the extreme rare edge cases where a few seconds makes the difference of which year a particular moment falls in. It just means that this calculator might in some edge cases find a slightly different result to a simpler calculation, because this implementation takes into account a few seconds of drift in the past. This will very rarely impact on a year-level date. It would matter if I made a tool that calculated the interval between two dates, but I am not doing that.
Calculated from possible start points that satisfy MXY 0.5171 = SEY 25343 BCE. Two possible dates satisfy this, so I selected the one that has the larger overlap of MXY 0.5171 & SEY 25343 BCE.