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",如果它和它的时区不使用?

Timezone . getutcoffset()需要DateTime,但是DateTime's Timezon

这里有一个例子说明为什么它很重要:

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偏移量,同时仍保持在同一时区