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

时间:2013-03-04 21:01:26

标签: datetime timezone dst nodatime

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

1 个答案:

答案 0 :(得分:9)

您可以从ZoneInterval获取此信息。这是一个有用的扩展方法。

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

现在你可以做到:

zdt.IsDaylightSavingsTime();

如果您没有ZonedDateTime,则可以从DateTimeZoneInstantLocalDateTime获得一个{{1}}。或者您可以按下此扩展方法将其作为参数。

更新:此功能现已包含在Noda Time v1.3及更高版本中,因此您无需再自行编写扩展方法。