System.TimeZoneInfo有一个名为IsDaylightSavingTime的方法,它接受一个DateTime对象,如果指定的日期时间落在该时区的DST中,则返回true。是否有NodaTime中的等效函数或其他方式来实现相同的结果?
答案 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
,则可以从DateTimeZone
加Instant
或LocalDateTime
获得一个{{1}}。或者您可以按下此扩展方法将其作为参数。
更新:此功能现已包含在Noda Time v1.3及更高版本中,因此您无需再自行编写扩展方法。