VC++/MFC タイムゾーンによる日時変換 (JST->UTC)

VC++/MFC ライブラリで日本時間(JST)を世界標準時間(UTC)へ変換行う方法を調べて試しました。
もっと良い方法があるのかもしれませんが、取り急ぎ。

// 現在の日時を取得
CTime t1;
t1 = CTime::GetCurrentTime();
_tprintf(_T("JST: %sn"), t1.Format(_T("%Y-%m-%d %H:%M:%S")));

// FormatGmt でUTC日時で表示
_tprintf(_T("UTC: %sn"), t1.FormatGmt(_T("%Y-%m-%d %H:%M:%S")));

// タイムゾーン情報の取得.
TIME_ZONE_INFORMATION tzi;
GetTimeZoneInformation(&tzi);
CString stzi(tzi.StandardName); // Unicode -> Shift-JIS.
_tprintf(_T("タイムゾーン: %sn"), (LPCTSTR)stzi);

// CTime -> SYSTEMTIME へ変換
SYSTEMTIME st1 = { 0 };
st1.wYear = t1.GetYear();
st1.wMonth = t1.GetMonth();
st1.wDay = t1.GetDay();
st1.wHour = t1.GetHour();
st1.wMinute = t1.GetMinute();
st1.wSecond = t1.GetSecond();

SYSTEMTIME st2 = { 0 };

// タイムゾーンによる日時変換
TzSpecificLocalTimeToSystemTime(&tzi, &st1, &st2);
// 表示
_tprintf(_T("UTC: %d-%02d-%02d %02d:%02d:%02dn"),
                        st2.wYear, st2.wMonth, st2.wDay,
                        st2.wHour, st2.wMinute, st2.wSecond);

出力結果:

JST: 2013-02-26 12:27:11
UTC: 2013-02-26 03:27:11
タイムゾーン: 東京 (標準時)
UTC: 2013-02-26 03:27:11

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください