How to calculate the stardate

The basic idea
Calculating the stardate
Sample calculation


Hello! I’m David, although some people who read this page will know me better as SuStel. Because I have been signing my e-mail with a curious little stardate number for many years now (since the early 1990s!), I get many requests to explain exactly how I come up with this number. In the interest of saving myself from typing the same answer to many people, I decided to put up this Web page to answer this very question.

Please note: this system is not used by anyone who works on Star Trek or at Paramount. It is totally unofficial.


Many years ago, while I was still in college, I found the Stardate Mini-FAQ on the Internet, a document that analyzed the stardates mentioned in log entries on the various Star Trek shows and movies. It was thorough and informative. I already knew that stardates on Star Trek: The Next Generation followed the format of 1,000 units = 1 year, but it also made many other observations. The most striking was that stardates in the original series of Star Trek begin with 1312.4 (“Where No Man Has Gone Before”) and end with 5943.7 (“All Our Yesterdays”). That’s a difference of 4,631.3 units, tantalizingly close to 5,000 units which, in Next Generation terms, would be five years—exactly the length of Kirk’s first mission as captain of the Enterprise!

This sort of consistency (well, the movies don’t really work this way) was too much for me to pass up. I’d been dating things with a pseudo-stardate system with which many are familiar (for example, November 2, 1996 would be written as 9611.02), but here was a chance for a truly decimal system. I got right to work.

The basic idea

In order to assign 1,000 units to exactly one year, I had to decide exactly what a year is. After all, one out of every four is different than the others. However, each century of the Julian calendar is exactly the same length. (Actually, most countries, including the United States, use the Gregorian calendar, where every 400 years is identical in length, not every 100, but since the difference won’t be noticable until March of 2100, I think you’ll agree that it doesn’t really matter if I take this little liberty.) If 1,000 units are one year, then 100,000 units are one century. Lo, and behold! A Next Generation stardate, like 47988.0, must be any number between 0 and 100,000. Perfect!

So all I had to do was determine exactly how much of the current century had passed so far, divide it by the total amount of time in the century (all of this based on, I decided, Greenwich Mean Time), and multiply by factors of 10 until I got the correct number of digits.

Calculating the stardate

For the sake of making the first two numbers of the stardate match the current year’s number, I decided to consider the 20th century as starting in 1900 and ending at the end of 1999. (Note: this is not really true!) I came up with an algorithm that calculates this, and wrote a Turbo Pascal program that does it all for me. This is a very simple program, and anyone using it must modify it for his or her time zone, possibly removing the corrections for Daylight Saving Time.

For simplicity, I have used a system that resembles the Julian Calendar, rather than the Gregorian calendar that most of us really use. Under the Julian system, each century is exactly the same length, whereas under the Gregorian system every 400 years is exactly the same length. So far, I have not decided to update my system with a more accurate one (i.e., one which follows the Gregorian system). The inaccuracy in using the Julian calendar is hardly noticable, and won’t kick in until March of AD 2100. I’m not worried, are you? (If this bothers you, feel free to send me e-mail and we’ll discuss it.) The reason for this decision is simple: the program runs off a computer’s internal clock, which doesn’t necessarily make the current century known.

Screenshot of the stardate
    program If you’re interested, my friend d’Armond Speers, aka Holtej, has written a Windows version of my stardate code. It’s a great program, and you may download this program if you like.

(Update, Stardate 15818.3) Since 64-bit Windows is much more common these days, my old Pascal program and d’Armond’s program don’t work on a lot of systems these days. To partly remedy that, I have written a PowerShell script that calculates the stardate for you. I won’t go into detail on how to use PowerShell; suffice it to say this script will work on any Windows 7 machine or later.

Basic usage:
Get-Stardate.ps1 [[-DateTime <DateTime>] [-Decimal <Int32>] [<CommonParameters>]

Get-Stardate.ps1 -Stardate <Double> [<CommonParameters>]

(Update, Stardate 16590.3) Having learned a little JavaScript, I've added a current stardate readout to the top of this page. You can also go to a page that only shows the stardate. Download that page to run the stardate locally.

Sample calculation

  1. Right now it’s 13:30 EST, November 2, 1996 (which means it is 18:30 GMT). The last leap year, not including this one, was 1992. That’s 92 years of century passed as of January 1, 1992. That’s also 92 × 365.25 = 33603 days. Call this A.
  2. Since then, there have been the full years 1992–1995. This is 366 + 365 + 365 + 365 days, or 1461 days. Call this B.
  3. Since January 1, 1996, there have been 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 days completed as of the end of October 31. This is 305 days. Call this C.
  4. This month, there has been 1 complete day (November 1). Call this D.
  5. As of this time, about 0.77 days have passed today (I keep more significant digits when using the program). Call this E.
  6. 100 years is equal to 36,525 days. Call this F.
  7. Calculate the stardate fraction: (A + B + C + D + E) ÷ F = 0.9683989…
  8. To put this into the format used in Star Trek: The Next Generation, simply multiply by 100,000. Truncating (never round; you have to complete a time unit before you count it), this gives you stardate 96839.8.


There you have it: my stardate system, the only true decimal time-keeping system I’ve ever seen. (Well, aside from all of these.) After using it for a while, you may notice that the first decimal place in the stardate is very roughly equivalent to one hour. This makes the system useful for short-term timekeeping. However, it is also able to keep account of time information for up to a century!

When the year 2000 finally arrived, I decided to roll my stardates back to zero—no sense in adding an additional digit. Besides, now that the year 2001 has passed, there are four whole digits, and you can read the stardate in the same way that Kirk does—as in “thirty-seven twenty-nine point six.” Excellent!

I am always interested in hearing any comments that anyone may have regarding this system. Feel free to write to me about it.

Last updated August 3, 2016
Stardate 16590.3

David Trimboli | Index