我正在运行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)
如何让格式化字符串具有数字的本地化值?
答案 0 :(得分: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);