サマータイムへの対応
時差を求める
DateTimeOffset utcNow = DateTimeOffset.UtcNow;
// 2022/01/04 20:37:30 +00:00
DateTimeOffset now = DateTimeOffset.Now;
// 2022/01/05 5:37:30 +09:00
タイムゾーンにおけるサマータイムの時間差を求める
// タイムゾーン情報を取得
TimeZoneInfo currentTimeZone = TimeZoneInfo.Local;
// 現在時刻を取得
DateTimeOffset now = DateTimeOffset.Now;
// 夏時間から夏時間考慮なしの時間を引いて差分を計算する
TimeSpan diffDst = currentTimeZone.GetUtcOffset(now) - currentTimeZone.BaseUtcOffset;
サマータイムが適用されている時間と、もともとの時間の差分を計算する。
サマータイムの判定
// 現在時刻を取得
DateTimeOffset now = DateTimeOffset.Now;
// サマータイムかどうかの判定
currentTimeZone.IsDaylightSavingTime(now)