如何解决在格式化长日期和在LOCALE_SLONGDATE中使用GetLocaleInfoEx时出现问题
我在这里感到困惑。根据我的Windows 10区域设置,长日期格式为:
我正在调整一些MFC代码:
strDate = CFormatUtility::FormatAsLongDate(datToFormat);
CString CFormatUtility::FormatAsLongDate(COleDateTime datDate)
{
CString strFormattedText;
TRY
{
TCHAR szDateFormatString[_MAX_PATH];
GetLocaleInfoEx(theApp.GetHtmlLanguageCode(),LOCALE_SLONGDATE,szDateFormatString,_MAX_PATH);
strFormattedText = FormatAsCustomDate(datDate,szDateFormatString);
}
CATCH(CException,Except)
{
}
END_CATCH
return strFormattedText;
}
TCHAR szDateFormatString[_MAX_PATH];
GetLocaleInfoEx(theApp.GetHtmlLanguageCode(),_MAX_PATH);
根据高级Windows设置:
但是当我使用上面的代码时:
如您所见,格式字符串为dddd,MMMM d,yyyy
,不正确。
根据LOCALE_SLONGDATE
的文档说:
语言环境的长日期格式字符串。该字符串允许的最大字符数为80,包括一个终止的空字符。该字符串可以包括日,月,年和时代格式的图片以及用单引号引起来的任何字符串的组合。单引号中的字符保持指定的状态。例如,西班牙语(西班牙)的长日期是“ dddd,dd” de“ MMMM” de“ yyyy”。语言环境可以定义多种长日期格式。
我应该澄清一下,第一个参数的值为en
。
更新
我在“区域设置”中看到有几种长日期类型:
但是,本练习的全部目的是,我获得了区域设置所使用的格式字符串。而且它没有返回该字符串dd MMMM yyyy
。
解决方法
问题(就我而言,我的操作系统是英国英语。因此,我必须使用en-gb
的语言代码,然后它显示我的日期格式字符串。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。