C# Convert TimeSpan to Long

Long type

Because a TimeSpan and a long are the same number of bytes, it is possible for you to store a TimeSpan as a long. This can be done by using the Ticks property on the TimeSpan. It is easier to persist a long in storage. We examine TimeSpan and its representation as a long Ticks in the C# language.

This C# example program converts a TimeSpan to a long. It converts the long to a TimeSpan.

Example

In this program, we get two DateTimes: one for now and one for a day ago. Then we get the difference as a TimeSpan instance. Next, we convert that TimeSpan into a long Ticks. Finally, we convert that long Ticks back into a TimeSpan, showing that you can round-trip longs and TimeSpans.

Program that converts TimeSpan to long [C#]

using System;

class Program
{
    static void Main()
    {
	// Difference between today and yesterday.
	DateTime yesterday = DateTime.Now.Subtract(TimeSpan.FromDays(1));
	DateTime now = DateTime.Now;
	TimeSpan diff = now.Subtract(yesterday);

	// TimeSpan can be represented as a long [ticks].
	long ticks = diff.Ticks;

	// You can convert a long [ticks] back into TimeSpan.
	TimeSpan ts = TimeSpan.FromTicks(ticks);

	// Display.
	Console.WriteLine(ts);

	// Note: long and TimeSpan are the same number of bytes [8].
	unsafe
	{
	    Console.WriteLine(sizeof(long));
	    Console.WriteLine(sizeof(TimeSpan));
	}
    }
}

Output

1.00:00:00.0010000
8
8
Byte type

Byte count. In the unsafe context, the program shows that a long is 8 bytes and a TimeSpan is also 8 bytes. Therefore, it is logical for one to fit in the other. It may be easier to write a long to a file or a database, which gives a good purpose to representing a TimeSpan as a long.

Sizeof Long TimeSpan Examples

Summary

The C# programming language

We saw how it is possible to convert from a TimeSpan and a long using the Ticks property and also the FromTicks method. By providing a long representation, the TimeSpan becomes more useful for external systems that might support simple numeric types better than struct types.

Time Representations
.NET