1

我正在运行 Windows 7 + 外语包。(我已将默认语言环境设置为外语)我有一个有效的 SYSTEMTIME 结构,我正在尝试从中构建一个本地化的日期/时间。

这就是我获取格式字符串然后尝试获取本地化日期的方式

WCHAR pFmt[MAX_SIZE] = {0};
int localeinfo=GetLocaleInfo(localeID, LOCALE_SSHORTDATE, pFmt, sizeof(pFmt)/sizeof(TCHAR));

我已经尝试了以下所有方法

GetDateFormat(LOCALE_USER_DEFAULT, 0, &st, pFmt, formattedString, MAX_PATH);
GetDateFormat(LOCALE_SYSTEM_DEFAULT, 0, &st, pFmt, formattedString, MAX_PATH);
GetDateFormat(localeinfo, 0, &st, pFmt, formattedString, MAX_PATH);

带有数字的字符串没有被本地化 - 在所有情况下,我总是得到 formattedstring

pFmt            "dd/MM/yyyy"
formattedString "25/09/2012"      (I want this to be in the foreign language)

如何使格式化字符串具有数字的本地化值?

4

1 回答 1

2

如果您想GetDateFormat使用与任何语言环境相对应的格式,那么您应该在没有格式字符串的情况下调用它(第 4 个参数设置为 NULL)。

例如,在调用此函数后尝试比较 formattedString:

LCID lcidEnUs = MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT);
GetDateFormat(lcidEnUs, 0, &st, NULL, formattedString, MAX_PATH);

和这个:

LCID lcidFrFr = MAKELCID(MAKELANGID(LANG_FRENCH, SUBLANG_FRENCH), SORT_DEFAULT);
GetDateFormat(lcidFrFr, 0, &st, NULL, formattedString, MAX_PATH);
于 2012-09-26T12:49:53.143 回答