微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在格式化长日期和在LOCALE_SLONGDATE中使用GetLocaleInfoEx时出现问题

如何解决在格式化长日期和在LOCALE_SLONGDATE中使用GetLocaleInfoEx时出现问题

在这里感到困惑。根据我的Windows 10区域设置,长日期格式为:

enter image description here

我正在调整一些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设置:

enter image description here

但是当我使用上面的代码时:

enter image description here

如您所见,格式字符串为dddd,MMMM d,yyyy,不正确。

根据LOCALE_SLONGDATE的文档说:

语言环境的长日期格式字符串。该字符串允许的最大字符数为80,包括一个终止的空字符。该字符串可以包括日,月,年和时代格式的图片以及用单引号引起来的任何字符串的组合。单引号中的字符保持指定的状态。例如,西班牙语(西班牙)的长日期是“ dddd,dd” de“ MMMM” de“ yyyy”。语言环境可以定义多种长日期格式。

我应该澄清一下,第一个参数的值为en

更新

我在“区域设置”中看到有几种长日期类型:

enter image description here

但是,本练习的全部目的是,我获得了区域设置所使用的格式字符串。而且它没有返回该字符串dd MMMM yyyy

解决方法

问题(就我而言,我的操作系统是英国英语。因此,我必须使用en-gb的语言代码,然后它显示我的日期格式字符串。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。