tm構造体のtm_isdstフラグの使い方に疑問があります。マニュアルページと結果をグーグルのとおり、私は、その値がmktimeとtm_isdstフラグ
A.を次のように0の値は、DSTが示さ時間
Bに対して有効でないことを示す1の値は、DSTがあることを示すと解釈されることを理解します実際には
C.値が-1の場合、mktimeはDSTが有効かどうかをチェックします。
私を混乱させるこの第3のポイントです。私の疑いは、mktimeがDSTを適用するかどうかを正確に把握するかどうかです。時間の経過とともに例えば
は
My Time Zone = GMT + 3:00
DST shifting = +1 Hour at 5:00 AM in January (to keep it simple)
Current UTC time = "01/Jan/2012 00:00:00"
UTC time in seconds time_t timetUTC = X seconds
Hence my time is = "01/Jan/2012 03:00:00"
は、私の理解
tm tmMyTime = localtime_r(X + 2 * 60 * 60) will set tmMyTime.tm_isdst to 0
tm tmMyTime = localtime_r(X + 3 * 60 * 60) will set tmMyTime.tm_isdst to 1
この方法を1として
"01/Jan/2012 04:00:00" (X + 1 * 60 * 60)
"01/Jan/2012 05:00:00" (X + 2 * 60 * 60)
"01/Jan/2012 05:59:59" (X + 2 * 60 * 60 + 59)
"01/Jan/2012 05:00:00" (X + 3 * 60 * 60)
"01/Jan/2012 06:00:00" (X + 4 * 60 * 60)
を私の時間値の変化を次のようにしても、他のすべてのコンポーネントかかわらずtm構造はどちらの場合も同じです mktime(tmMyTime)はpを返すことができますtm_isdstの値に応じて、ローパーのUTC値。
ここで、tmMyTime.tm_isdst = -1に設定すると、mktimeはどのような値を返しますか?私は、TZ変数、時間データベースなどについて読んでいます。それにもかかわらず、論理的には、mktime()はDST補正を適用するかどうかを2回発生するtm値に適用するかどうかを考えます。
私たちのタイムゾーンにはDSTがありません。したがって、私の理解が であるかどうかは分かりません。私が間違っていれば私を修正してください。あなたの助けが大変ありがとうございます。
ローカル時間があいまいであることがわかりました。そうです。 –