#visual-c #mfc
#visual-c #mfc
Вопрос:
Я здесь запутался. В соответствии с моими региональными настройками 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 ‘гггг». Локали могут определять несколько форматов длинных дат.
Я должен уточнить, что значение первого параметра равно en
.
Обновить
В моих региональных настройках я вижу, что существует несколько типов длинных дат:
Но весь смысл этого упражнения в том, что я получаю строку формата, которая используется региональными настройками. И он не возвращает эту строку dd MMMM yyyy
.
Ответ №1:
Проблема (в моем случае в том, что моя операционная система — английская Великобритания. Поэтому мне пришлось использовать код языка en-gb
, а затем он показывает мою строку формата даты.