Ticks Converter. C# .NET DateTime Ticks to Date
Every .NET DateTime is built on ticks: 100-nanosecond intervals since January 1, year 1. Paste a tick count here and read it as a date, or turn any date into the ticks your C# code needs.
.NET DateTime ticks.
The 100-nanosecond ticks behind DateTime.Ticks, DateTimeOffset,
and every EF Core rowversion (decoded since year 1.
100-nanosecond intervals since January 1, year 1, UTC.
What a tick is
A DateTime.Ticks value counts 100-nanosecond intervals since
midnight on January 1, year 1 (0001-01-01). It is the internal representation of every
System.DateTime and DateTimeOffset, and the reason EF Core
rowversions and Stopwatch readings look like huge 18-digit numbers:
DateTime.UtcNow.Ticks, current time in ticks.DateTimeOffset.UtcNow.Ticks, same count, no offset applied.Stopwatch.GetTimestamp(), a similar 100ns count on Windows.- File
LastWriteTimeUtc.Ticks, stored timestamps in .NET code.
The gap between year 1 and the Unix epoch (1970) is 621355968000000000 ticks —
exactly 62135596800000 ms.
The tick-to-Unix conversion, one division each way
- Ticks → Unix ms:
ticks / 10_000 - 62135596800000. - Unix ms → Ticks:
(ms + 62135596800000) * 10_000.
Tick counts, decoded
621355968000000000→ January 1, 1970 00:00:00 UTC, the Unix epoch, in ticks.639216576000000000→ August 7, 2026 00:00:00 UTC.- Maximum:
3155378975999999999→ December 31, 9999 23:59:59.9999999.
Ticks in C#, PowerShell, and Python
- C#:
new DateTime(639216576000000000, DateTimeKind.Utc)andDateTime.UtcNow.Ticks. - PowerShell:
[DateTime]::new(639216576000000000, [DateTimeKind]::Utc). - Python:
datetime(1, 1, 1, tzinfo=timezone.utc) + timedelta(microseconds=ticks / 10). - Go:
time.Unix(0, (ticks-621355968000000000)*100).
Gotchas: precision, the year-1 epoch, and Kind
- Precision loss, current tick counts (~18 digits) exceed JavaScript's safe-integer range; this converter reads and writes them with
BigInt. - Not a Unix value, ticks count from year 1, so an unadjusted paste lands in year 1, not 1970. Apply the 621355968000000000 offset.
- Kind matters.
DateTimeticks are the same count regardless ofKind; only the interpretation (Local vs UTC vs Unspecified) changes. - Range.NET supports year 1 through 9999. Dates outside that range simply don't exist as ticks.
First published · Last reviewed · Maintained and developed by the Real Epoch Converter team · Email · Contact · Methodology
Other long-epoch formats and the bug they share
Ticks are one of several 100-nanosecond-era formats, and 64-bit values bring their own pitfalls:
- Chrome / WebKit — microseconds since 1601, a nearby offset
- Cocoa Core Data — seconds since 2001 in Apple frameworks
- Excel serial dates — days since 1900, with the leap-year bug
- Windows time formats — the FILETIME family explained
- Bug 4: losing precision on 64-bit values
- LDAP / AD FileTime — the same 100 ns unit from 1601 instead
- Unix timestamp to date — the post-1970 standard for comparison