System.TimeZoneInfo ha un metodo chiamato IsDaylightSavingTime, che accetta un oggetto DateTime e restituisce true se il datetime specificato cade nell'ora legale per quel fuso orario. Esiste una funzione equivalente in NodaTime o un altro modo per ottenere lo stesso risultato?Qual è l'equivalente di System.TimeZoneInfo.IsDaylightSavingTime in NodaTime?
8
A
risposta
9
È possibile ottenere questo da un ZoneInterval
. Ecco un metodo di estensione che ti aiuterà.
public static bool IsDaylightSavingsTime(this ZonedDateTime zonedDateTime)
{
var instant = zonedDateTime.ToInstant();
var zoneInterval = zonedDateTime.Zone.GetZoneInterval(instant);
return zoneInterval.Savings != Offset.Zero;
}
ora si può fare:
zdt.IsDaylightSavingsTime();
Se non si dispone di un ZonedDateTime
, è possibile ottenere uno da un DateTimeZone
più o un Instant
o un LocalDateTime
. Oppure puoi massaggiare questo metodo di estensione per prenderli come parametri.
Aggiornamento: Questa funzione è ora inclusa in Noda Time v1.3 e versioni successive, quindi non è più necessario scrivere il metodo di estensione da soli.
Ho aggiunto ora una richiesta di funzionalità per includerla direttamente in ZonedDateTime: https://code.google.com/p/noda-time/issues/detail?id=264 –