ClockMath

C# Ticks to DateTime Converter

Paste a .NET DateTime.Ticks value on the left to see the matching UTC date, or type a date on the right to get its ticks. The two fields stay in sync as you type.

How this works

In .NET, the DateTime structure stores an instant as a 64-bit integer count of 100-nanosecond intervals (called ticks) since 00:00:00 UTC on 1 January 0001 in the proleptic Gregorian calendar. To convert a ticks value to a date you subtract the Unix epoch offset (621,355,968,000,000,000 ticks) and divide by 10,000 to get milliseconds since 1970-01-01 UTC:

unixMilliseconds = (ticks - 621_355_968_000_000_000) / 10_000

Because ticks values exceed JavaScript's safe integer range (253−1), this converter performs the math in BigInt so the trailing 100-nanosecond digits are never lost.

Common examples

Frequently asked questions

What is a tick in C# / .NET?

A tick is a 100-nanosecond interval. .NET's DateTime.Ticks property is the number of these intervals that have elapsed since midnight on January 1, year 1 in the proleptic Gregorian calendar (UTC). One second equals 10,000,000 ticks; one millisecond equals 10,000 ticks.

Why are .NET ticks different from Unix timestamps?

Unix timestamps count seconds (or milliseconds) since 1970-01-01 UTC. .NET ticks count 100-nanosecond intervals since 0001-01-01 UTC. The offset between them is exactly 621,355,968,000,000,000 ticks (which equals 62,135,596,800,000 milliseconds).

Can I trust this converter for sub-millisecond precision?

Yes. All ticks math runs in BigInt, so the full 7 fractional digits (100-ns resolution) are preserved end-to-end. The ISO 8601 output matches the format produced by .NET's DateTime.ToString("o").

What is the maximum DateTime ticks value?

DateTime.MaxValue.Ticks is 3,155,378,975,999,999,999, which corresponds to 9999-12-31 23:59:59.9999999 UTC.

Related tools