Как получить не просто названия, а в разных для отображения даты падежах. Например, "ноября" а не "ноябрь"?
Для GetLocaleInfoEx есть только параметры LOCALE_SMONTHNAME11, LOCALE_SABBREVMONTHNAME11, для которых получаем соответственно "Ноябрь" и "ноя".
Вызов GetDateFormatEx вида:
GetDateFormatEx(L"ru-RU", NULL, NULL, L"MMMM", szBuf, 128, NULL);
с заданным форматом "MMMM" ожидаемо возвращает "Ноябрь", как и сказано в MSDN:
MMMM — Format month as its full name. The function uses the LOCALE_SMONTHNAME value associated with the specified locale.
С флагом DATE_YEARMONTH получаем "Ноябрь 2023"
С Флагом DATE_LONGDATE — "11 ноября 2023г."
Естественно это нужно не только для одной локали. Вычленять названия месяцев из DATE_LONGDATE для разных локалей тот еще квест.
Есть ли какая функция для получения названий месяцев в разных падежах?
LOCALE_SMONTHNAME1 Native long name for January. The maximum number of characters allowed for this string is 80, including a terminating null character. Note: Calling the GetLocaleInfo or GetLocaleInfoEx function with a LOCALE_SMONTHNAME* constant returns the standalone, or nominative, form of the month name. To get the genitive form of the month name, the application calls GetDateFormat or GetDateFormatEx with a date picture of ddMMMM and removes the two digits from the beginning of the retrieved string.
ЕМ>LOCALE_SMONTHNAME1 Native long name for January. The maximum number of characters allowed for this string is 80, including a terminating null character. Note: Calling the GetLocaleInfo or GetLocaleInfoEx function with a LOCALE_SMONTHNAME* constant returns the standalone, or nominative, form of the month name. To get the genitive form of the month name, the application calls GetDateFormat or GetDateFormatEx with a date picture of ddMMMM and removes the two digits from the beginning of the retrieved string.
А реальная реализация локали — это, небось, код (.DLL), а не таблица? И этот вот код и знает, как склонять свои слова...
Здравствуйте, Евгений Музыченко, Вы писали:
Pzz>>И этот вот код и знает, как склонять свои слова...
ЕМ>А еще, подозреваю, в некоторых языках падежные формы в "10 ноября", "с ноября, "до ноября и т.п. не одинаковы.
Ну да. Но это не проблема, если каждому языку положена своя DLL-ка.
Интересно, ведь есть, наверное, языки, в которых эта форма еще и от значения самого числительного зависит.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>А еще, подозреваю, в некоторых языках падежные формы в "10 ноября", "с ноября, "до ноября и т.п. не одинаковы.
Это возможно, но вникать в это не хочется. Мне нужны только варианты названий месяцев в написании дат.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Не понял. Если Вам не нужно названия месяца в отрыве от конкретной даты, то зачем извлекать его из строки даты, которую отдает система?
Для определения чем является строка — датой, временем, денежным числом тд. И второе — для преобразования этой строки в соответствующий формат.
То есть примерно то, что делает Excel при открытии например, CSV файла, когда текстовые поля преобразуются в нужный формат ячеек.
и названия месяцев мне конечно нужны отдельно от конкретных дат