2013-03-04 71 views
8

System.TimeZoneInfo有一個名爲IsDaylightSavingTime的方法,它接受一個DateTime對象,並且如果指定的日期時間落在該時區的DST中,則返回true。在NodaTime中有沒有相同的功能或其他方式來實現相同的結果?什麼是NodaTime中的System.TimeZoneInfo.IsDaylightSavingTime等效項?

+0

我現在添加了一項功能請求,直接在ZonedDateTime中包含此功能:https://code.google.com/p/noda-time/issues/detail?id = 264 – 2014-01-06 08:35:52

回答

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加上無論是一個InstantLocalDateTime。或者你可以按摩這個擴展方法,把它們作爲參數。

更新:此功能現已包含在Noda Time v1.3及更高版本中,因此您不必再自己編寫擴展方法。

相關問題