将它们全部存储为通用时间,并转换为当地时区。你会发现ToUniversalTime和ToLocalTime有帮助。 下面是从MSDN示例代码:
System.Console.WriteLine("Enter a date and time.");
string strDateTime = System.Console.ReadLine();
System.DateTime localDateTime;
try {
localDateTime = System.DateTime.Parse(strDateTime);
}
catch (System.FormatException) {
System.Console.WriteLine("Invalid format.");
return;
}
System.DateTime univDateTime = localDateTime.ToUniversalTime();
System.Console.WriteLine("{0} local time is {1} universal time.",
localDateTime,
univDateTime);
System.Console.WriteLine("Enter a date and time in universal time.");
strDateTime = System.Console.ReadLine();
try {
univDateTime = System.DateTime.Parse(strDateTime);
}
catch (System.FormatException) {
System.Console.WriteLine("Invalid format.");
return;
}
localDateTime = univDateTime.ToLocalTime();
System.Console.WriteLine("{0} universal time is {1} local time.",
univDateTime,
localDateTime);
'ToLocalTime'始终使用本机的当前时区 - 它不会让您指定特定的时区,烦人。幸运的是,.NET 3.5通过'TimeZoneInfo'显着改善了事情。 – 2009-12-31 18:46:17
好点。它也只关注当前的DST调整规则,而不是过去的规则,所以对于过去的日期它可能会导致转换错误。您建议的'TimeZoneInfo.ConvertTime'方法似乎没有失败。 – jball 2009-12-31 18:49:15