我正在尝试将CST中的DateTime转换为EST,同时调整夏令时。我的本地机器在EST上。 在msdn上找到了this,但用户fokasu 建议使用DateTimeOffset来调整DST,但我不知道如何将其合并到我的代码中。谢谢你的帮助。 这是我到目前为止有效的方法,但我认为它不适合夏令时。
DateTime cstTime, utcTime;
DateTime estTime;
string cstZoneId, estZoneId;
TimeZoneInfo cstZone, estZone;
estZoneId = "Eastern Standard Time";
cstZoneId = "Central Standard Time";
estZone = TimeZoneInfo.FindSystemTimeZoneById(estZoneId);
cstZone = TimeZoneInfo.FindSystemTimeZoneById(cstZoneId);
//define d as CST
cstTime = d;
try
{
//convert CST to UTC
utcTime = TimeZoneInfo.ConvertTimeToUtc(cstTime, cstZone);
//convert UTC to EST
estTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, estZone);
return estTime;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
答案 0 :(得分:0)
从你的问题不清楚问题是什么;你没有描述你的代码产生的结果,也没有描述你期望的结果。
除了每年两个时段,每个时段一个小时,中部和东部时间总是相隔一个小时。例外情况是夏令时过渡和退出。在美国东部时间凌晨2点,即3月的第二个星期日,东部时区的时钟将移至美国东部时间凌晨3点。在接下来的60分钟内,东部时间比中部时间早两个小时。然后,在CST凌晨2点,中央时区的时钟移动到凌晨3点CDT,差异返回到1小时。
同样,在11月的第一个星期日,美国东部时间凌晨2点,时钟设置为东部时间凌晨1点。在接下来的60分钟内,中心区域仍然是夏令时,所以两个地方的时间都是一样的。一小时后,中央区的时钟向后移动一小时,恢复正常的时差。
由于您的时间永远不会落入这两个时期,您可以放心地假设中部时间总是在东部时间前一小时。