我的目标是获得UTC与其他时区之间的差异。以UTC和EST之间的差异为例(UTC-5:00)。同样为了举例说明我的系统目前处于太平洋标准时间,因此DateTime.Kind," LOCAL"是PST。为了找到UTC和EST之间的差异,我强制提供我在PST中提供的DateTime。这是我的代码的简化代码段:
public static void Run_Timezone_Test()
{
var myDate = DateTime.Now;
Console.WriteLine(myDate.Kind);
//OUTPUT: Local (note this is currently PST)
var easternTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
var offset = easternTimeZone.GetUtcOffset(myDate);
Console.WriteLine(offset);
//OUTPUT: -05:00:00 (correct offset for EST)
Console.ReadLine();
}
为什么我被迫提供" myDate"如果它和它的时区没有使用?
答案 0 :(得分:3)
以下是一个重要原因的例子:
connect()
在撰写本文时,这将输出(假设您已安装AEST作为系统时间 - 您可以通过var AUSEast = TimeZoneInfo.FindSystemTimeZoneById("AUS Eastern Standard Time");
var offset = AUSEast.GetUtcOffset(DateTime.Now);
Console.WriteLine(offset);
offset = AUSEast.GetUtcOffset(DateTime.Now.AddMonths(6));
Console.WriteLine(offset);
进行检查):
TimeZoneInfo.GetSystemTimeZones()
请注意,不的时区本身表示与UTC的偏移量。时间异常(最常见的是夏令时)将改变UTC偏移,同时仍保持在同一时区