Что такое эквивалент 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 и выше, поэтому вам больше не нужно самостоятельно писать метод расширения.

Другие вопросы по тегам