サマータイム

GetTimeZoneInformation を利用して、サマータイムを取得。
ごにょごにょした結果、とりあえず動作の把握完了。

1.GetTimeZoneInformation の戻り値で、現在サマータイム期間か通常期間かの判別可能

TIME_ZONE_ID_UNKNOWN
 サマータイム制度が無い
TIME_ZONE_ID_STANDARD
 サマータイム制度あり、現在標準時刻帯
TIME_ZONE_ID_DAYLIGHT
 サマータイム制度あり、現在サマータイム時刻帯
TIME_ZONE_ID_INVALID
 エラー、どんな時に出るか不明


2.上の呼び出しで格納された TIME_ZONE_INFORMATION で、シフト時刻取得可能
TIME_ZONE_INFORMATION.Bias
標準時差情報(分)
TIME_ZONE_INFORMATION.DaylightBias
サマータイム時差分時間情報(分)
TIME_ZONE_INFORMATION.DaylightDate
サマータイム開始時間
TIME_ZONE_INFORMATION.StandardBias
標準時差分時間情報(分)
TIME_ZONE_INFORMATION.StandardDate
サマータイム終了時間


現在、サマータイムかどうかを確認する場合は、GetTimeZoneInformation を呼び出してサマータイムかどうかを確認。
unknown の場合は、Bias のみを減算。
standard の場合は、 Bias + StandardBias を減算。
daylight の場合は、 Bias + DaylightBias を減算。
で算出可能、もしくは、差分をそのまま保存。
とりあえず、自分がやりたい事はこれで実現可能な模様。