TimeSpan
, LongIn the C# programming language, TimeSpan
and long are the same number of bytes. It is possible to store a TimeSpan
as a long.
Converting a TimeSpan
to a long can be done with the Ticks property on TimeSpan
. It is easier to persist a long in storage.
In this program, we get two DateTimes
. Then we get the difference as a TimeSpan
instance. Next, we convert that TimeSpan
into a long Ticks.
TimeSpan
, showing that you can round-trip longs and TimeSpans
.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)); } } }1.00:00:00.0010000 8 8
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 is possible to convert from a TimeSpan
and a long using the Ticks property and the FromTicks
method. Sometimes a long representation is more useful for external systems.