Функция GetDateFormat

Declare Function GetDateFormat Lib "kernel32" Alias 
"GetDateFormatA" ( _
    ByVal Locale As Long, ByVal dwFlags As Long, _
	lpDate As SYSTEMTIME, _
	ByVal lpFormat As Any, _
    ByVal lpDateStr As String, ByVal cchDate As Long) As Long

GetDateFormat форматирует дату в соответствии с форматом даты для заданного локального контекста

Возвращаемое значение

В случае ошибки функция возвращает 0 (используйте GetLastError для получения кода ошибки). В успешном случае функция возвращает число символов, записанных в буфер lpDateStr

Параметры

Locale
Идентификатор локального контекста для определения формата. Если равен 0, то используется локальный контекст потока. Также может принимать одно из следующих значений:
LOCALE_SYSTEM_DEFAULT = &H400
Системный локальный контекст по умолчанию
LOCALE_USER_DEFAULT = &H800
dwFlags
Комбинация флагов, определяющих формат даты. Если используется параметр lpFormat, то используется 0
LOCALE_NOUSEROVERRIDE = &H80000000
Используется системный локальный контекст по умолчанию, игнорируя любые пользовательские настройки
LOCALE_USE_CP_ACP = &H40000000
Используется системная кодовая страница ANSI
DATE_SHORTDATE = &H1
Форматирует строку, используя короткий формат даты
DATE_LONGDATE = &H2
Форматирует строку, используя длинный формат даты
DATE_YEARMONTH = &H8
Форматирует строку, используя формат год/месяц
DATE_USE_ALT_CALENDAR = &H4
При существовании альтернативного календаря используется формат данного календаря
DATE_LTRREADING = &H10
Добавляет метку чтения слева-направо
DATE_RTLREADING = &H20
Добавляет метку чтения справа-налево
lpDate
Дата для форматирования строки. Поля структуры, задающее время, игнорируются
lpFormat
Шаблон для форматирования строки с датой. При использовании предопределенных форматов установите этот параметр в 0. Возможные варианты шаблонов:
d
День месяца как цифра без начальный нулей для однозначных чисел
dd
День месяца с использованием 0 для однозначных чисел
ddd
Трехбуквенное сокращение названия дня недели
dddd
Полное имя недели
Месяц как цифра без 0 для однозначных чисел
MM
Месяц как цифра с 0 для однозначных чисел
MMM
Трехбуквенное сокращение имени месяца
MMMM
Полное имя месяца
y
Последние две цифры года без 0 для годов меньше 10
yy
Последние две цифры года с 0 для годов меньше 10
yyyy
Все четыре цифры года
gg
Период/эра, если задано локальным контекстом
lpDateStr
Буфер, который принимает отформатированную строку
cchDate
Длина буфера lpDateStr. Если параметр равен 0, необходимая длина буфера возвращается функцией

Пример

' Выводим сегодняшнюю дату
' в длинном форматре и в формате HTTP
Dim today As SYSTEMTIME ' сегодняшнее число и время
Dim datestr As String  ' получаемая строка
Dim strlen As Long ' длина буфера

' Получаем сегодняшнюю дату для данной временной зоны
GetLocalTime today

' Создаем место для буфера
datestr = Space(255)
' Форматируем дату в длинном формате
strlen = GetDateFormat(0, DATE_LONGDATE, today, CLng(0), datestr, Len(datestr))
datestr = Left(datestr, strlen)
Debug.Print "Сегодня "; datestr

' Снова создаем место для буфера
datestr = Space(255)
' Форматируем дату по другому
strlen = GetDateFormat(0, 0, today, "ddd',' dd MMM yyyy", datestr, Len(datestr))
datestr = Left(datestr, strlen)
Debug.Print "Сегодня "; datestr

Смотри также

GetTimeFormat

Категория

Поддержка национальных языков