1

次のように、「拡張モード」で日付を出力する必要があります。

Thursday 02 August 2013

COleDateTime を使用しても問題はありませんが、これをローカル言語 (私の場合はイタリア語) で印刷する必要があります。ベース SDK コマンドを使用する古いコンパイラで、次のコードを見つけました。

char                            lpDateStr[128], lpTimeStr[128];
SYSTEMTIME                      today;
WString                         str;

FileTimeToSystemTime( &IdUnicoK1, &today );
GetDateFormat( LOCALE_USER_DEFAULT, DATE_LONGDATE, &today, NULL, lpDateStr, sizeof(lpDateStr) );
GetTimeFormat( LOCALE_USER_DEFAULT, TIME_FORCE24HOURFORMAT, &today, NULL, lpTimeStr, sizeof(lpTimeStr) );
str.Sprintf( "%s,  %s", lpDateStr, lpTimeStr );

MSDNによると、MFCでは次のようになります。

SYSTEMTIME stBuf;
CString    strD;
CString    strT;
CString    strData;

FileTimeToSystemTime( &m_pK1->m_ftMyData, &stBuf );
strD = _T("dddd dd MMMM yyyy");
GetDateFormat( LOCALE_USER_DEFAULT, DATE_LONGDATE, &stBuf, NULL, strD.GetBuffer(), strD.GetLength() );
strT = _T("HH':'mm':'ss");
GetTimeFormat( LOCALE_USER_DEFAULT, TIME_FORCE24HOURFORMAT, &stBuf, NULL, strT.GetBuffer(), strT.GetLength() );
strData.Format( _T("%s, %s"), strD, strT );

しかし、これにより次の結果が得られました。

dddd dd MMMM yyyy, HH':'mm':'ss

どこが間違っていますか?

4

2 に答える 2

1

MFC バージョンは、「ストレート C」バージョンと機能的に同等ではありません。

次のように、最初のバージョンを使用して結果を CString に変換できます。

CString strDateTime;
strDateTime.Format("%s,  %s", lpDateStr, lpTimeStr);

それ以外の場合は、次のようにする必要があります。

FileTimeToSystemTime( &m_pK1->m_ftMyData, &stBuf );
GetDateFormat( LOCALE_USER_DEFAULT, DATE_LONGDATE, &stBuf, NULL, strD.GetBuffer(128), 128);
GetTimeFormat( LOCALE_USER_DEFAULT, TIME_FORCE24HOURFORMAT, &stBuf, NULL, strT.GetBuffer(128), 128);
strD.ReleseBuffer();
strT.ReleseBuffer();
strData.Format(_T("%s, %s"), strD, strT);
于 2013-08-02T14:16:10.517 に答える