Windows GetDateFormat API関数を使用して日付をフォーマットしようとしています:
nResult = GetDateFormat(
localeId, //0x409 for en-US, or LOCALE_USER_DEFAULT if you're not testing
0, //flags
dt, //a SYSTEMTIME structure
"M/d/yyyy", //the format we require
null, //the output buffer to contain string (null for now while we get the length)
0); //the length of the output buffer (zero while we get the length)
次に、日付/時刻を渡します。
SYSTEMTIME dt;
dt.wYear = 1600;
dt.wMonth = 12;
dt.wDay = 31;
この場合、nResult はゼロを返します。
成功しなかった場合、関数は 0 を返します。拡張エラー情報を取得するために、アプリケーションは GetLastError を呼び出し、次のエラー コードのいずれかを返すことができます。
- ERROR_INSUFFICIENT_BUFFER。指定されたバッファ サイズが十分に大きくないか、誤って NULL に設定されました。
- ERROR_INVALID_FLAGS。フラグに指定された値が無効でした。
- ERROR_INVALID_PARAMETER。パラメータ値のいずれかが無効でした。
ただし、1 日後の日付を返す場合:
SYSTEMTIME dt;
dt.wYear = 1601;
dt.wMonth = 1;
dt.wDay = 1;
その後、動作します。
私は何を間違っていますか?日付をフォーマットするにはどうすればよいですか?
例:キリストの生年月日:
12/25/0000
または宇宙が始まった日付:
-10/22/4004 6:00 PM
またはカエサルが亡くなった日:
-3/15/44