Поделиться через


_strdate_s, _wstrdate_s

Копирование текущей системной даты в буфер. Здесь представлены версии _strdate, _wstrdate с усовершенствованной безопасностью, как описано в разделе Функции безопасности в CRT.

errno_t _strdate_s(
   char *buffer,
   size_t numberOfElements
);
errno_t _wstrdate_s(
   wchar_t *buffer,
   size_t numberOfElements
);
template <size_t size>
errno_t _strdate_s(
   char (&buffer)[size]
); // C++ only
template <size_t size>
errno_t _wstrdate_s(
   wchar_t (&buffer)[size]
); // C++ only

Параметры

  • [исходящий] buffer
    Указатель на буфер, который будет заполнен форматированной строкой даты.

  • [входящий] numberOfElements
    Размер буфера.

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

Ноль, если успешно. Возвращаемое значение — код ошибки в случае сбоя. Коды ошибок определенны в ERRNO.H; см. таблицу ниже для конкретных ошибок, создаваемых этой функцией. Дополнительные сведения о кодах ошибок см. в разделе errno.

Условия возникновения ошибки

buffer

numberOfElements

Return

Содержимое buffer.

NULL

(any)

EINVAL

Без изменений

Не NULL (указывающий на допустимый буфер)

0

EINVAL

Без изменений

Не NULL (указывающий на допустимый буфер)

0 < numberOfElements < 9

EINVAL

Пустая строка

Не NULL (указывающий на допустимый буфер)

numberOfElements >= 9

0

Текущая дата, отформатированная в соответствии с замечаниями

Проблемы безопасности

Передача недопустимого отличного от NULL значения для буфера приведет к нарушению прав доступа, если параметр numberOfElements больше 9.

Передача для размера значения, превышающего фактический размер buffer, может привести к переполнению буфера.

Заметки

Эти функции предоставляют более безопасные версии _strdate и _wstrdate. Функция _strdate_s копирует текущую системную дату в буфер, указанный в buffer, в формате mm/dd/yy, где mm — две цифры, представляющее месяц, dd — две цифры, представляющие день, и yy — две цифры последние две цифры года. Например, строка 12/05/99 представляет 5-е декабря 1999. Буфер должен быть по крайней мере 9 знаков длиной.

_wstrdate_s — это двухбайтовая версия функции _strdate_s; аргумент и возвращаемое значение _wstrdate_s являются строками двухбайтовых символов. В остальном эти функции ведут себя идентично.

Если buffer указатель на NULL или если numberOfElements менее 9 символов, то вызывается обработчик недопустимого параметра, как описано в разделе Проверка параметров. Если продолжение выполнения разрешено, эти функции возвращают -1 и устанавливают errno в EINVAL, если буфер NULL или если numberOfElements меньше или равно 0, или устанавливают errno в ERANGE при numberOfElements меньше 9.

В C++ использование данных функций упрощено наличием шаблонных перегрузок; перегруженные методы могут автоматически определять длину буфера (что исключает необходимость указания аргумента с размером буфера), а также они могут автоматически заменять более старые, незащищенные функции их новыми безопасными аналогами. Дополнительные сведения см. в разделе Безопасные перегрузки шаблонов.

Универсальное текстовое сопоставление функций:

Подпрограмма TCHAR.H

_UNICODE & _MBCS не определены

_MBCS определено

_UNICODE определено

_tstrdate_s

_strdate_s

_strdate_s

_wstrdate_s

Требования

Подпрограмма

Обязательный заголовок

_strdate

<time.h>

_wstrdate

<time.h> или <wchar.h>

_strdate_s

<time.h>

Пример

См. пример для time.

Эквивалент в .NET Framework

System::DateTime::Parse

См. также

Ссылки

Управление временем

asctime_s, _wasctime_s

ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s

gmtime_s, _gmtime32_s, _gmtime64_s

localtime_s, _localtime32_s, _localtime64_s

mktime, _mktime32, _mktime64

time, _time32, _time64

_tzset