SystemTimeToFileTimeについて質問です。MSDNによればSystemTimeToFileTimeは単に表現形式を変更するだけの関数という気がするのですが、
タイムゾーンを考慮した何らかの変換が行われるのでしょうか。といいますのも、下のプログラムを実行すると
2005/07/06 20:10:10 ...(1)による出力
2005/07/06 20:10:10 ...(2)
2005/07/06 13:10:10 ...(3)
2005/07/06 20:10:10 ...(4)
と出力されるのですが、(2)と(3)で値が異なってしまうのはなぜでしょうか。
ちなみにアメリカ在住でタイムゾーンを((GMT-08:00) Pacific Time (US & Canada))に設定しています。

static string CTime_AsString( CTime& zCTime ){ char acBuff[1024]; sprintf( acBuff, "%d/%02d/%02d %02d:%02d:%02d", zCTime.GetYear(), zCTime.GetMonth(), zCTime.GetDay(), zCTime.GetHour(), zCTime.GetMinute(), zCTime.GetSecond() ); return acBuff; }

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
/*(1)*/CTime zAsCTime( 2005, 7, 6, 20, 10, 10 );
cout << CTime_AsString( zAsCTime ) << endl;

/*(2)*/SYSTEMTIME zAsSYSTEMTIME; zAsCTime.GetAsSystemTime( zAsSYSTEMTIME );
cout << CTime_AsString( CTime(zAsSYSTEMTIME) ) << endl;

/*(3)*/FILETIME zAsFILETIME; SystemTimeToFileTime( &zAsSYSTEMTIME, &zAsFILETIME );
cout << CTime_AsString( CTime(zAsFILETIME) ) << endl;

/*(4)*/FILETIME zAsFILETIME2; LocalFileTimeToFileTime( &zAsFILETIME, &zAsFILETIME2 );
cout << CTime_AsString( CTime(zAsFILETIME2) ) << endl;

return 0;
}