Timezone . getutcoffset()需要DateTime,但是DateTime's Timezon
本文关键字:DateTime Timezon 但是 getutcoffset 需要 Timezone | 更新日期: 2023-09-27 18:17:50
我的目标是获得UTC和另一个时区之间的差异。以UTC和EST (UTC-5:00)之间的差异为例。另外,为了方便示例,假设我的系统目前是太平洋标准时间,所以DateTime。"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",如果它和它的时区不使用?
这里有一个例子说明为什么它很重要:
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);
在撰写本文时,这将输出(假设您已将AEST安装为系统时间—您可以通过TimeZoneInfo.GetSystemTimeZones()
检查):
11:00:00
10:00:00
请注意,时区不本身表示与UTC的偏移量。时间异常(最常见的是夏令时)将改变UTC偏移量,同时仍保持在同一时区