GetDayLightChanges from System.Timezone.CurrentTimeZone

本文关键字:CurrentTimeZone Timezone System from GetDayLightChanges | 更新日期: 2023-09-27 18:30:08

我对这个问题感到困惑。

我有一个控制台应用程序,它需要接受日光更改并将其放入DB中。

var daylight = System.TimeZone.CurrentTimeZone.GetDaylightChanges(dateofOffset.Year); 
var start = daylight.Start.ToString(); 
var end = daylight.End.ToString();

如果我将机器上的时区设置为东部时间,则dayLight对象将具有有效日期,但如果我将计算机的时区切换到任何其他时区,则开始日期和结束日期的函数结果为1/1/0001。

我的应用程序在Windows7上运行。我正在通过窗口上"日期和时间"选项的"更改时区"来更改时区。

我是不是错过了一些显而易见的东西?

感谢

GetDayLightChanges from System.Timezone.CurrentTimeZone

也许运行此方法将有助于澄清:

public void ListDSTAdjustmentRules()
    {
        var tz = TimeZoneInfo.GetSystemTimeZones();
        foreach (var timeZoneInfo in tz)
        {
            var adjustments = timeZoneInfo.GetAdjustmentRules();
            foreach (var adjustmentRule in adjustments)
            {
                Console.WriteLine(
                    "TimeZone: {0} SupportsDST: {1} DateStart: {2} DateEnd: {3} Delta: {4}",
                    timeZoneInfo.DisplayName, timeZoneInfo.SupportsDaylightSavingTime, adjustmentRule.DateStart,
                    adjustmentRule.DateEnd, adjustmentRule.DaylightDelta);
            }
        }
    }

正如我在上面的评论中所提到的,如果一个时区不支持DST,那么GetDaylightChanges()将返回一个默认对象,其中值为DateTime.MinValue,Delta是一个带有0个刻度的TimeSpan。