8

System.TimeZoneInfoには、 IsDaylightSavingTimeというメソッドがあります。このメソッドは、DateTimeオブジェクトを受け取り、指定された日時がそのタイムゾーンのDSTに該当する場合にtrueを返します。NodaTimeまたは同じ結果を達成するための別の方法に同等の関数はありますか?

4

1 に答える 1

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から 1 つを取得できます。または、この拡張メソッドをマッサージして、それらをパラメーターとして受け取ることができます。DateTimeZoneInstantLocalDateTime

更新: この関数は Noda Time v1.3 以降に含まれるようになったため、拡張メソッドを自分で記述する必要がなくなりました。

于 2013-03-04T23:47:53.267 に答える