TimeSpan
This .NET type represents a period of time. With it we use a host of helper functions to make managing time periods easier.
TimeSpan
leads to simpler, more reliable VB.NET programs that act upon time representations. We can use helpful methods on TimeSpan
.
The TimeSpan
type has many useful constructors. These allow you to specify the exact period of time you want the TimeSpan
to represent.
TimeSpan
of one day, two hours, and 1 minute.TimeSpan
constructor are ordered from largest unit of time to smallest.Module Module1 Sub Main() ' Use the TimeSpan constructor. ' ... Days, hours, minutes, seconds, milliseconds. Dim span As TimeSpan = New TimeSpan(1, 2, 1, 0, 0) Console.WriteLine(span) End Sub End Module1.02:01:00
TimeSpan.From
We can create a new TimeSpan
instance in another way. The From functions allow you to specify a unit to create the TimeSpan
from.
TimeSpan
.Module Module1 Sub Main() ' Get TimeSpan instances from a specific unit of time. Dim span1 As TimeSpan = TimeSpan.FromDays(1) Dim span2 As TimeSpan = TimeSpan.FromHours(1) Dim span3 As TimeSpan = TimeSpan.FromMinutes(1) Dim span4 As TimeSpan = TimeSpan.FromSeconds(1) Dim span5 As TimeSpan = TimeSpan.FromMilliseconds(1) Console.WriteLine(span1) Console.WriteLine(span2) Console.WriteLine(span3) Console.WriteLine(span4) Console.WriteLine(span5) End Sub End Module1.00:00:00 01:00:00 00:01:00 00:00:01 00:00:00.0010000
The TimeSpan
type allows us to add and subtract instances. We can compute the total time or the difference between 2 TimeSpan
instances.
Module Module1 Sub Main() ' Input TimeSpans. Dim span1 As TimeSpan = TimeSpan.FromMinutes(1) Dim span2 As TimeSpan = TimeSpan.FromMinutes(2) ' Add. Dim span3 As TimeSpan = span1.Add(span2) Console.WriteLine(span3) ' Subtract. Dim span4 As TimeSpan = span2.Subtract(span1) Console.WriteLine(span4) End Sub End Module00:03:00 00:01:00
Max
, Min
On TimeSpan
we can use the MaxValue
, MinValue
, and Zero constants. These return a TimeSpan
instance that has been initialized to a special value.
TimeSpan.Zero
constant as a default value for a TimeSpan
.Module Module1
Sub Main()
' Maximum, minimum, zero values.
Console.WriteLine(TimeSpan.MaxValue)
Console.WriteLine(TimeSpan.MinValue)
Console.WriteLine(TimeSpan.Zero)
End Sub
End Module10675199.02:48:05.4775807
-10675199.02:48:05.4775808
00:00:00
TicksPer
How can you convert ticks to other units of time? You can use the TimeSpan.TicksPer
constants. These are on the TimeSpan
type.
Module Module1
Sub Main()
' Display these constants.
Console.WriteLine(TimeSpan.TicksPerDay)
Console.WriteLine(TimeSpan.TicksPerHour)
Console.WriteLine(TimeSpan.TicksPerMinute)
Console.WriteLine(TimeSpan.TicksPerSecond)
Console.WriteLine(TimeSpan.TicksPerMillisecond)
End Sub
End Module864000000000
36000000000
600000000
10000000
10000
If you subtract a larger TimeSpan
from a smaller TimeSpan
, your result will be negative. You can then invoke Duration()
to see the difference.
Module Module1 Sub Main() ' Convert this negative TimeSpan into a positive TimeSpan. Dim span As TimeSpan = New TimeSpan(-1, -1, -1) Dim duration As TimeSpan = span.Duration() Console.WriteLine(duration) End Sub End Module01:01:01
TotalHours
The Hours returns the hours part of the TimeSpan
. The TotalHours
returns the entire TimeSpan
represented by Hours.
TimeSpan
follow this same pattern. They represent the total time, not just a unit of it.Module Module1 Sub Main() ' Compare Hours and TotalHours. Dim span As TimeSpan = New TimeSpan(0, 500, 0, 0, 0) Console.WriteLine(span.Hours) Console.WriteLine(span.TotalHours) End Sub End Module20 500
TimeSpans
are extremely useful in a wide variety of programs. We can use them to compute durations, and differences between 2 points in time.