Что такое эквивалент System.TimeZoneInfo.IsDaylightSavingTime в NodaTime?
В System.TimeZoneInfo есть метод IsDaylightSavingTime, который принимает объект DateTime и возвращает значение true, если указанное время / дата попадает в летнее время для этого часового пояса. Есть ли в NodaTime эквивалентная функция или другой способ достижения того же результата?
1 ответ
Решение
Вы можете получить это от 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 и выше, поэтому вам больше не нужно самостоятельно писать метод расширения.