using System;
using System.Data;
using System.Data.SqlClient;
using System.Threading;
using System.Diagnostics;
class Class1 {
[STAThread]
static void Main(string[] args) {
SqlConnection dbConn = new SqlConnection("server=.;database=pubs;uid=sa;pwd=");
SqlCommand dbComm = new SqlCommand("SELECT * FROM " + "authors", dbConn);
SqlDataReader dr = null;
Trace.WriteLine(DateTime.Now + " - Executing SQL statement");
try {
dbConn.Open();
Trace.Assert(dbConn.State == ConnectionState.Open,"Error", "Connection failed...");
dr = dbComm.ExecuteReader(CommandBehavior.CloseConnection);
Trace.Assert(dr != null, "Error","The SqlDataReader is null!");
while (dr.Read()) {
}
} catch {
Trace.Fail("An error occurred in database access");
} finally {
if ((dr.IsClosed == false) && (dr != null))
dr.Close();
}
}
}
Week refers to the week of the month, with “5” meaning the last week.
using System;
using System.Globalization;
public class MainClass {
public static void Main() {
TimeZoneInfo wa = TimeZoneInfo.FindSystemTimeZoneById("W. Australia Standard Time");
foreach (TimeZoneInfo.AdjustmentRule rule in wa.GetAdjustmentRules()) {
Console.WriteLine("Rule: applies from " + rule.DateStart +
" to " + rule.DateEnd);
Console.WriteLine(" Delta: " + rule.DaylightDelta);
Console.WriteLine(" Start: " + FormatTransitionTime
(rule.DaylightTransitionStart, false));
Console.WriteLine(" End: " + FormatTransitionTime
(rule.DaylightTransitionEnd, true));
Console.WriteLine();
}
}
static string FormatTransitionTime(TimeZoneInfo.TransitionTime tt,
bool endTime) {
if (endTime && tt.IsFixedDateRule
&& tt.Day == 1 && tt.Month == 1
&& tt.TimeOfDay == DateTime.MinValue)
return "-";
string s;
if (tt.IsFixedDateRule)
s = tt.Day.ToString();
else
s = "The first second third fourth last".Split()[tt.Week - 1] +
" " + tt.DayOfWeek + " in";
return s + " " + DateTimeFormatInfo.CurrentInfo.MonthNames[tt.Month - 1]
+ " at " + tt.TimeOfDay.TimeOfDay;
}
}
TimeZoneInfo also provides IsDaylightSavingTime and GetUtcOffset methods–the difference is that they accept either a DateTime or DateTimeOffset.
using System;
public class MainClass {
public static void Main() {
TimeZoneInfo wa = TimeZoneInfo.FindSystemTimeZoneById("W. Australia Standard Time");
Console.WriteLine(wa.Id);
Console.WriteLine(wa.DisplayName);
Console.WriteLine(wa.BaseUtcOffset);
Console.WriteLine(wa.SupportsDaylightSavingTime);
}
}
The TimeZoneInfo class works in a similar manner. TimeZoneInfo.Local returns the current local time zone:
using System;
public class MainClass {
public static void Main() {
TimeZoneInfo zone = TimeZoneInfo.Local;
Console.WriteLine(zone.StandardName);
Console.WriteLine(zone.DaylightName);
}
}
The Id property corresponds to the value passed to FindSystemTimeZoneById.
using System;
public class MainClass {
public static void Main() {
foreach (TimeZoneInfo z in TimeZoneInfo.GetSystemTimeZones())
Console.WriteLine(z.Id);
}
}
Convert To TimeZone
//Octavalent Extension Methods
//http://sdfasdf.codeplex.com/
//Library of extension methods for .Net create by Octavalent (www.octavalent.nl)
using System;
public static class DateTimeExtensions
{
public static DateTime ConvertToTimeZone(this DateTime dateTime, string SystemTimeZoneId)
{
dateTime = dateTime.ToUniversalTime();
dateTime = dateTime.Add(TimeZoneInfo.FindSystemTimeZoneById(SystemTimeZoneId).GetUtcOffset(dateTime));
return dateTime;
}
}
The static TimeZone.CurrentTimeZone method returns a TimeZone object based on the current local settings
using System;
public class MainClass {
public static void Main() {
TimeZone zone = TimeZone.CurrentTimeZone;
Console.WriteLine(zone.StandardName);
Console.WriteLine(zone.DaylightName);
}
}

