【发布时间】:2020-11-06 09:34:43
【问题描述】:
我在这里感到困惑。根据我的 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(),
LOCALE_SLONGDATE, szDateFormatString, _MAX_PATH);
根据高级 Windows 设置:
然而当我使用上面的代码时:
如您所见,格式字符串是dddd, MMMM d, yyyy,这是不对的。
根据LOCALE_SLONGDATE 的文档,它说:
语言环境的长日期格式字符串。此字符串允许的最大字符数为 80,包括终止空字符。该字符串可以由日、月、年和纪元格式图片的组合以及用单引号括起来的任何字符串组成。单引号中的字符保持原样。例如,西班牙语(西班牙)长日期是“dddd, dd' de 'MMMM' de 'yyyy”。语言环境可以定义多种长日期格式。
我应该澄清一下,第一个参数的值是en。
更新
我在我的区域设置中看到有几种类型的长日期:
但是这个练习的重点是我获得了区域设置使用的格式字符串。而且它没有返回那个字符串dd MMMM yyyy。
【问题讨论】:
标签: visual-c++ mfc