在一些系统设计中,时间日期,钱币符号等很多东西在每个国家的表示都是不同。如何让程序自动适应这些变化?
GetLocaleInfo为此提供了解决办法。
GetLocaleInfo可以获取各种数据的设置参数。配合GetDateFormat,GetTimeFormat可以获的日期、时间的本地格式化结果。
GetNumberFormat可以获取数字显示的本地格式化输出结果
以下为时间显示参考代码
其它请参照MSDN尝试自行设置并查看结果.
GetLocaleInfo为此提供了解决办法。
GetLocaleInfo可以获取各种数据的设置参数。配合GetDateFormat,GetTimeFormat可以获的日期、时间的本地格式化结果。
GetNumberFormat可以获取数字显示的本地格式化输出结果
以下为时间显示参考代码
TCHAR sdate[128],stime[64];
TCHAR szBuffer[MAX_PATH] = {0};
DWORD dwBufLen = sizeof(TCHAR)*MAX_PATH;
SYSTEMTIME tnow;
GetLocalTime(&tnow);
//显示如: L"23.06.09"
GetDateFormat(LOCALE_SYSTEM_DEFAULT,0,&tnow,0,sdate,64);
//显示如: L"05:57:08 AM"
GetTimeFormat(LOCALE_SYSTEM_DEFAULT,TIME_FORCE24HOURFORMAT,&tnow,TEXT("HH:mm:ss tt"),stime,64);
//如果szBuffer == L"0"表示12小时制,szBuffer == L"1"表示24小时制
GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_ITIME, szBuffer,dwBufLen);
//LOCALE_ILANGUAGE: 显示数字字符如: L"0409"
//LOCALE_SLANGUAGE: 显示字符如: L"English (United States)"
//LOCALE_SENGLANGUAGE: 显示字符如: L"English"
//LOCALE_SABBREVLANGNAME: 显示字符如: L"ENU"
//LOCALE_SNATIVELANGNAME: 显示字符如: L"English"
GetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_SENGLANGUAGE,szBuffer,dwBufLen);
//得到本地代码页
DWORD GetLocalPageCode()
{
WCHAR pwCodePage[6] = {0};
GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_IDEFAULTCODEPAGE, pwCodePage, sizeof(pwCodePage));
return _wtoi(pwCodePage);
}
其它请参照MSDN尝试自行设置并查看结果.