C# TimeZone Examples

http://www.dotnetperls.com/timezone

C# TimeZone Examples

You want to get information about the TimeZone that the current computer is in. Time zones on the planet Earth change on lines on longitude, and you cannot assume the current computer is in any particular time zone reliably. Fortunately, as we demonstrate in this example set, the TimeZone type provides information about time zones for C# programmers.

Time zone names

What is the name of a specific time zone? The .NET Framework contains information about the names for time zones; you can access the properties StandardName and DaylightName to get these strings. Also, this example as well as the following ones shows how you can get the current time zone with the TimeZone.CurrentTimeZone property accessor.

Program that gets time zone names [C#]
using System;
class Program
{
 static void Main()
 {
 // Get current time zone.
 TimeZone zone = TimeZone.CurrentTimeZone;
 string standard = zone.StandardName;
 string daylight = zone.DaylightName;
 Console.WriteLine(standard);
 Console.WriteLine(daylight);
 }
}
Output
 (This will depend on your computer's location and system settings.)
Mountain Standard Time
Mountain Daylight Time

Get universal time (local time)

There are two concepts of time you can use: the local time, which depends on where the computer is located on the Earth; and the universal time, which is independent of the computer’s location. If you use universal times, you can compare times from different locations with no errors.

Program that checks universal and local times [C#]
using System;
class Program
{
 static void Main()
 {
 TimeZone zone = TimeZone.CurrentTimeZone;
 // Demonstrate ToLocalTime and ToUniversalTime.
 DateTime local = zone.ToLocalTime(DateTime.Now);
 DateTime universal = zone.ToUniversalTime(DateTime.Now);
 Console.WriteLine(local);
 Console.WriteLine(universal);
 }
}
Output
 (This also depends on your computer's location.)
8/26/2010 1:02:28 PM
8/26/2010 7:02:28 PM

Get offsets

A UTC offset indicates how many hours a time zone differs from the Coordinated Universal Time (also referred to as Zulu Time or Greenwich Mean Time). When you call GetUtcOffset on a TimeZone instance, you get a TimeSpan instance that indicates how many hours the time is different from UTC.

TimeSpan Examples

Program that checks UTC offset [C#]
using System;
class Program
{
 static void Main()
 {
 TimeZone zone = TimeZone.CurrentTimeZone;
 // Get offset.
 TimeSpan offset = zone.GetUtcOffset(DateTime.Now);
 Console.WriteLine(offset);
 }
}
Output
 (Results vary on location.)
-06:00:00

Daylight changes

Daylight saving time was invented by George Vernon Hudson in New Zealand. Its intention is to save money by reducing the costs of keeping lights on at night. Today, its main purpose is to make software programmers’ lives hard. This short program shows how you can get information about the current year’s daylight saving changes: when the clock is set forward, and when this change is reverted.

Program that shows daylight changes [C#]
using System;
using System.Globalization;
class Program
{
 static void Main()
 {
 // Get daylight saving information for current time zone.
 TimeZone zone = TimeZone.CurrentTimeZone;
 DaylightTime time = zone.GetDaylightChanges(DateTime.Today.Year);
 Console.WriteLine("Start: {0}", time.Start);
 Console.WriteLine("End: {0}", time.End);
 Console.WriteLine("Delta: {0}", time.Delta);
 }
}
Output
 (Your mileage may vary.)
Start: 3/14/2010 2:00:00 AM
End: 11/7/2010 2:00:00 AM
Delta: 01:00:00

Daylight saving time

This program shows how you can scan individual dates for their daylight saving status. It is probably better to use the GetDaylightChanges method instead of the IsDaylightSavingTime method repeatedly; however, IsDaylightSavingTime can be useful in some cases.

Program that checks daylight saving time [C#]
using System;
class Program
{
 static void Main()
 {
 DateTime d = new DateTime(2010, 1, 1);
 TimeZone cur = TimeZone.CurrentTimeZone;
 bool flag = !cur.IsDaylightSavingTime(d);
 for (int i = 0; i < 365; i++)
 {
 bool f = cur.IsDaylightSavingTime(d);
 if (f != flag)
 {
 Console.WriteLine("{0}: begin {1}", d, f);
 flag = f;
 }
 d = d.AddDays(1);
 }
 }
}
Output
 (Depends on your time zone.)
1/1/2010 12:00:00 AM: begin False
3/15/2010 12:00:00 AM: begin True
11/8/2010 12:00:00 AM: begin False

Summary

The TimeZone type in the C# language and .NET Framework provides a handy way to get information about time zones. You can use the CurrentTimeZone property to get the information for the computer, and then call methods that reveal information about daylight saving time universal times and UTC offsets.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s