Преобразование даты
Отформатированную в соответствии с указанным набором национальных параметров текстовую строку даты вы можете получить от функции GetDateFormat, во многом аналогичной только что рассмотренной функции GetTimeFormat.
Приведем прототип функции GetDateFormat:
int GetDateFormat(
LCID Locale, // идентификатор набора параметров
DWORD dwFlags, // флаги режима работы функции
CONST SYSTEMTIME *lpDate, // дата
LPCTSTR lpFormat, // строка формата даты
LPTSTR lpDateStr, // буфер для записи выходной строки
int cchDate); // размер выходного буфера в байтах
Рассмотрим отличия этой функции от функции GetTimeFormat.
Ниже мы привели набор констант, которые можно использовать для параметра dwFlags. Эти константы отличаются о тех, что можно использовать с функцией GetTimeFormat:
Константа | Описание | ||
LOCALE_NOUSEROVERRIDE | Строка даты будет получена в формате, который используется операционной системой по умолчанию для данного идентификатора набора национальных параметров | ||
DATE_SHORTDATE | Сокращенный формат даты | ||
DATE_LONGDATE | Полный формат даты | ||
DATE_USE_ALT_CALENDAR | Использование альтернативного календаря, если таковой определен для данного идентификатора набора национальных параметров |
Отличаются также специальные символы, которые можно использовать в строке формата даты:
Символ | Компонента даты | ||
d | День месяца без ведущего нуля | ||
dd | День месяца с ведущим нулем | ||
ddd | Трехбуквенное сокращение дня недели | ||
dddd | Полное название дня недели | ||
M | Номер месяца без ведущего нуля | ||
MM | Номер месяца с ведущим нулем | ||
MMM | Трехбуквенное сокращение названия месяца | ||
MMMM | Полное название месяца | ||
y | Двухзначное обозначение года без ведущего нуля (последние две цифры года) | ||
yy | Двухзначное обозначение года с ведущим нулем | ||
yyyy | Полный номер года | ||
gg | Название периода или эры |
Пример использования функции GetDateFormat для получения строки текущей даты приведен ниже:
GetDateFormat(GetThreadLocale(),
LOCALE_NOUSEROVERRIDE | DATE_LONGDATE,
NULL, NULL, szBuf1, 512);