に似ている:
今回のシナリオは次のとおりです。「2011061411322100」という形式の文字列時刻を GMT に変換する必要があります。問題は、時間が別の PC から来ており、歴史的な時間であることです。そのため、リアルタイムで時間を取得していないため、コードが実行されているボックスの現地時間から単純に GMT を取得することはできません。
時刻は開始時刻と終了時刻を表します。時間の変更中にコードが実行されている場合、時間の変更は、時間を取得しているリモート ボックスに適用されます。そのため、変更が開始時間と終了時間の間に発生した場合、終了時間はオフセットされます。
最初に tm に変換する必要があると思います:
// add to tm struct
tm tmTime;
tmTime.tm_hour = hour;
tmTime.tm_min = min;
tmTime.tm_sec = sec;
tmTime.tm_mday = day;
tmTime.tm_mon = (month-1);
tmTime.tm_year = (year - 1900);
次に、time_tに変換します
time_t tmInTime_t = mktime( &tmTime );
次に、gmtime を使用します。
struct tm *gmt = gmtime( &tmInTime_t );
開始と終了の間で時間の変更が発生した場合、これは依然として大きなデルタを引き起こします。どうすれば修正できますか? .tm_isdst を設定する必要がありますか? 何を設定すればよいかどうすればわかりますか?