' Example of the TimeZone.ToLocalTime( DateTime ) and
' TimeZone.GetUtcOffset( DateTime ) methods.
Imports System
Imports Microsoft.VisualBasic
Module UTCTimeDemo
Sub Main( )
Const headFmt As String = "{0,-20}{1,-20}{2,-12}{3}"
' Get the local time zone and a base Coordinated Universal
' Time (UTC).
Dim localZone As TimeZone = TimeZone.CurrentTimeZone
Dim baseUTC As DateTime = new DateTime( 2000, 1, 1 )
Console.WriteLine( "This example of " & vbCrLf & _
" TimeZone.ToLocalTime( DateTime ) and" & vbCrLf & _
" TimeZone.GetUtcOffset( DateTime ) " & vbCrLf & _
"generates the following output, which varies " & _
"depending on the time zone " & vbCrLf & "in which " & _
"it is run. The example creates several Coordinated " & _
"Universal " & vbCrLf & "Times (UTC), displays the " & _
"corresponding local times and UTC offsets, " & _
vbCrLf & "and shows if the times occur in daylight " & _
"saving time (DST)." & vbCrLf )
Console.WriteLine( "Local time: {0}" & vbCrLf, _
localZone.StandardName )
Console.WriteLine( headFmt, "UTC", "Local Time", _
" Offset", "DST?" )
Console.WriteLine( headFmt, "---", "----------", _
" ------", "----" )
' Generate several UTC times.
Dim loopX As Integer
For loopX = 0 to 10
' Calculate the local time and UTC offset.
Dim localTime As DateTime = _
localZone.ToLocalTime( baseUTC )
Dim localOffset As TimeSpan = _
localZone.GetUtcOffset( localTime )
Console.WriteLine( "{0,-20:yyyy-MM-dd HH:mm}" & _
"{1,-20:yyyy-MM-dd HH:mm}{2,-12}{3}", _
baseUTC, localTime, localOffset, _
localZone.IsDaylightSavingTime( localTime ) )
' Advance to another UTC.
baseUTC = baseUTC.AddDays( 155.55 )
Next loopX
End Sub
End Module
' This example of
' TimeZone.ToLocalTime( DateTime ) and
' TimeZone.GetUtcOffset( DateTime )
' generates the following output, which varies depending on the time zone
' in which it is run. The example creates several Coordinated Universal
' Times (UTC), displays the corresponding local times and UTC offsets,
' and shows if the times occur in daylight saving time (DST).
'
' Local time: Pacific Standard Time
'
' UTC Local Time Offset DST?
' --- ---------- ------ ----
' 2000-01-01 00:00 1999-12-31 16:00 -08:00:00 False
' 2000-06-04 13:12 2000-06-04 06:12 -07:00:00 True
' 2000-11-07 02:24 2000-11-06 18:24 -08:00:00 False
' 2001-04-11 15:36 2001-04-11 08:36 -07:00:00 True
' 2001-09-14 04:48 2001-09-13 21:48 -07:00:00 True
' 2002-02-16 18:00 2002-02-16 10:00 -08:00:00 False
' 2002-07-22 07:12 2002-07-22 00:12 -07:00:00 True
' 2002-12-24 20:24 2002-12-24 12:24 -08:00:00 False
' 2003-05-29 09:36 2003-05-29 02:36 -07:00:00 True
' 2003-10-31 22:48 2003-10-31 14:48 -08:00:00 False
' 2004-04-04 12:00 2004-04-04 05:00 -07:00:00 True