System.TimeZoneInfo 有一个名为IsDaylightSavingTime的方法,该方法接受一个 DateTime 对象,如果指定的日期时间在该时区的 DST 中,则返回 true。NodaTime中是否有等效的功能或其他方式来实现相同的结果?
问问题
1219 次
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
,你可以从一个DateTimeZone
plus Instant
或 a中得到一个LocalDateTime
。或者您可以按摩此扩展方法以将其作为参数。
更新: 此功能现在包含在 Noda Time v1.3 及更高版本中,因此您不再需要自己编写扩展方法。
于 2013-03-04T23:47:53.267 回答