8

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

4

1 回答 1

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();

如果你没有 a ZonedDateTime,你可以从一个DateTimeZoneplus Instant或 a中得到一个LocalDateTime。或者您可以按摩此扩展方法以将其作为参数。

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

于 2013-03-04T23:47:53.267 回答