NodaTime中的System.TimeZoneInfo.IsDaylightSavingTime等价物是什么?

ash*_*ash 8 timezone datetime dst nodatime

System.TimeZoneInfo有一个名为IsDaylightSavingTime的方法,该方法接受DateTime对象,如果指定的日期时间落在该时区的DST中,则返回true.在NodaTime中是否有相同的功能或其他方式来实现相同的结果?

Mat*_*int 9

你可以从一个ZoneInterval.这是一个有用的扩展方法.

public static bool IsDaylightSavingsTime(this ZonedDateTime zonedDateTime)
{
    var instant = zonedDateTime.ToInstant();
    var zoneInterval = zonedDateTime.Zone.GetZoneInterval(instant);
    return zoneInterval.Savings != Offset.Zero;
}
Run Code Online (Sandbox Code Playgroud)

现在你可以这样做:

zdt.IsDaylightSavingsTime();
Run Code Online (Sandbox Code Playgroud)

如果你没有ZonedDateTime,你可以从一个或一个DateTimeZone加号 得到一个.或者您可以按下此扩展方法将其作为参数.InstantLocalDateTime

更新: 此功能现在包含在Noda Time v1.3及更高版本中,因此您不必再自己编写扩展方法.