C++ 得到系统的时间主要用到函数GetLocaleInfo. 详细定义可以查MSDN。还有http://blog.csdn.net/li_guotao/article/details/4306460介绍了一些基本用法,但是只提到怎么得到类似ENU这样的缩写,没有讲怎么得到zh-cn这种格式。今天有要求把ENU改成en-us这种形式,首先想到的是做个map,这样只能把国家限死,想加新的国家不好加。到网上找解决方案。具体网站http://stackoverflow.com/questions/7749999/converting-lcid-to-language-string,自己写了段代码如下。
TCHAR szLanguage[BUFFER_SIZE]={0};
DWORD dwLanguage = sizeof(TCHAR)*BUFFER_SIZE;
TCHAR szCountry[BUFFER_SIZE]={0};
DWORD dwCountry = sizeof(TCHAR)*BUFFER_SIZE;
// Get language code.
int ccbufLanguage = GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SISO639LANGNAME, szLanguage, dwLanguage);
// Get Country code.
int ccbufCountry = GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SISO3166CTRYNAME, szCountry, dwLanguage);
if (ccbufCountry != 0)
{
szLanguage[ccbufLanguage++] = '-';
wcscat_s(szLanguage,szCountry);
}
如果哪位同学有更好的方法,还请赐教。