TIME & DATE GUIDE

Why Does My Date Show January 1, 1970?

January 1, 1970 is timestamp zero — the Unix epoch. Here is what produces it, the seconds-vs-milliseconds mix-up, and how to diagnose and fix it in a minute.

The short version

January 1, 1970 is the Unix epoch — the moment computers start counting time from. A date displayed as a timestamp of zero renders as exactly that date. So when your app, spreadsheet, or dashboard shows January 1, 1970, it is not broken in a mysterious way: it received a zero, blank, or missing timestamp and faithfully converted it. The fix is finding where the zero came from. The three usual suspects: the field was never set, a null got coerced to 0, or seconds were fed into a milliseconds field (fix: multiply by 1,000). The Unix timestamp converter shows the epoch live — but the hand method below diagnoses it anywhere.

What the epoch actually is

Computers store moments as a single number: seconds since January 1, 1970, 00:00:00 UTC. That starting line is the epoch. Zero means the first second of 1970; 1,000,000,000 was September 9, 2001; as this page was written the counter sat near 1.79 billion, i.e. October 2026. Dates before 1970 are negative timestamps. Every system that stores time this way — databases, APIs, file systems, JavaScript — agrees on the same zero point, which is why a zero timestamp always renders as January 1, 1970 and never some other random date.

Suspect 1: the field is zero, null, or blank

The most common cause, and the most boring. Somewhere between the data and your screen, the timestamp field holds nothing: a database column never filled in, an API that returned null, a JSON key that arrived missing, a spreadsheet cell left empty. Most date-formatting code does not error on a missing value — it quietly treats it as 0, and 0 is January 1, 1970. The tell: every affected row shows exactly 1970-01-01, not a spread of wrong dates. The fix is upstream, not in the formatter — find why the value is missing and the dates fix themselves.

Suspect 2: seconds fed into a milliseconds field

The most common interesting cause. Unix timestamps are 10 digits (seconds); JavaScript, MongoDB, and many JSON APIs work in 13-digit milliseconds. Feed a 10-digit seconds value into a milliseconds field and the date lands in… January 1970 again, because 1,792,671,060 milliseconds is only about 21 days after the epoch. The rule: 10 digits = seconds, 13 digits = milliseconds. Count them. If your “date” is stuck in 1970, multiply by 1,000. If instead your dates show the year 50,000-something, you did the reverse — fed milliseconds into a seconds field — and the fix is dividing by 1,000. In code: JavaScript new Date(1792671060) gives 1970; new Date(1792671060 * 1000) gives October 22, 2026.

Suspect 3: a genuinely pre-1970 date, misread

Negative timestamps are valid — they count before the epoch — but many systems mangle them. Excel does not use the Unix epoch at all: it counts days from December 30, 1899, so importing a Unix timestamp into Excel without converting lands you in 1970. Some databases clamp negative values to 0, and some languages’ date libraries throw on them. If your 1970 dates should be, say, birthdates from the 1960s, the timestamp is probably being read as unsigned — negative values wrap to zero or to absurdly large numbers. Check the raw value: a negative number means the data is fine and the reader is wrong.

Suspect 4: a time-zone display quirk

A close cousin: the date shows December 31, 1969 instead. That is still the epoch — midnight UTC on January 1 — displayed in a US time zone, where midnight UTC is 7 or 8 PM the previous evening. The data is correct; the display zone is just west of Greenwich. Same family, same fix path: check the raw timestamp before blaming the data.

Diagnose it in 60 seconds

Look at the raw value behind the date — the API response, the database cell, the console.log — not the formatted output. Then:

What you seeWhat it meansThe fix
0, null, or blankThe timestamp was never setFix the data source, not the formatter
10 digits (1.7…e9)SecondsMultiply by 1,000 if the reader expects milliseconds
13 digits (1.7…e12)MillisecondsDivide by 1,000 if the reader expects seconds
A negative numberA real pre-1970 dateUse a reader that handles negative timestamps
Dec 31, 1969Midnight UTC viewed from the USData is fine — it is a display zone

Practice: three values

Cover the diagnoses, then check against the converter.

Raw valueDigitsDiagnosis
01Missing data — shows Jan 1, 1970; fix upstream
179267106010Seconds — Oct 22, 2026; ×1000 for ms readers
179267106000013Milliseconds — same instant; ÷1000 for seconds readers

The 2038 footnote

Signed 32-bit integers max out at 2,147,483,647 seconds — January 19, 2038, 03:14:07 UTC. Old 32-bit systems will wrap to December 1901 at that instant, the mirror image of today’s 1970 problem: a storage limit expressing itself as a wrong date. If your dates are wrong in 2038 the way they are wrong in 1970 now, check the integer width. Modern 64-bit systems push the overflow billions of years out.

The bottom line: January 1, 1970 is never random — it is timestamp zero. Count the digits, find the missing or mis-scaled value, and the dates come back. The converter decodes any value you find, and the full epoch explainer lives in how to convert a Unix timestamp.

Cite this pageBright Side Kit. “Why Does My Date Show January 1, 1970?.” brightoolbox.com, 2026.Bright Side Kit. "Why Does My Date Show January 1, 1970?." https://brightoolbox.com/guides/why-does-my-date-show-january-1-1970/ Accessed October 22, 2026.
Embed this guide

Paste this into any web page to embed the live guide. The “Bright Side Kit” link below it must stay intact.

Frequently asked questions

Why does my date show January 1, 1970?

Because the timestamp is zero, null, or blank — zero is the Unix epoch, the moment computers start counting time from. Find the missing or mis-scaled value upstream; the formatter is just reporting what it got.

What is the difference between a 10-digit and 13-digit timestamp?

10 digits = seconds since the epoch, 13 digits = milliseconds. Feeding seconds into a milliseconds field lands you in 1970 — multiply by 1,000. Feeding milliseconds into a seconds field gives year 50,000-something — divide by 1,000.

My API returns null dates and they show as 1970 — whose bug is it?

The data source’s. The formatter coerces null to 0 and renders the epoch faithfully. Guard the display (show “not set” for null) and fix why the field is empty.

Why does Excel show 1970 when I paste a timestamp?

Excel does not use the Unix epoch — it counts days from December 30, 1899. Convert first: =A1/86400 + DATE(1970,1,1) turns seconds in A1 into an Excel date.

Why do I see December 31, 1969 instead of January 1, 1970?

Same epoch, different zone: midnight UTC on January 1 is still December 31 evening in the US. The data is correct — it is a display time zone.

Is January 1, 1970 related to the 2038 problem?

Yes — same family. 1970 means a zero timestamp; 2038 means a timestamp that overflowed a 32-bit integer (2,147,483,647 seconds). Both are storage limits wearing a date costume.