8
System.TimeZoneInfo有一個名爲IsDaylightSavingTime的方法,它接受一個DateTime對象,並且如果指定的日期時間落在該時區的DST中,則返回true。在NodaTime中有沒有相同的功能或其他方式來實現相同的結果?什麼是NodaTime中的System.TimeZoneInfo.IsDaylightSavingTime等效項?
System.TimeZoneInfo有一個名爲IsDaylightSavingTime的方法,它接受一個DateTime對象,並且如果指定的日期時間落在該時區的DST中,則返回true。在NodaTime中有沒有相同的功能或其他方式來實現相同的結果?什麼是NodaTime中的System.TimeZoneInfo.IsDaylightSavingTime等效項?
你可以從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
。或者你可以按摩這個擴展方法,把它們作爲參數。
更新:此功能現已包含在Noda Time v1.3及更高版本中,因此您不必再自己編寫擴展方法。
我現在添加了一項功能請求,直接在ZonedDateTime中包含此功能:https://code.google.com/p/noda-time/issues/detail?id = 264 – 2014-01-06 08:35:52