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


_strdate_s, _wstrdate_s

Скопируйте текущую системную дату в буфер. Эти функции — это версии с улучшениями безопасности,_wstrdateкак описано в функциях безопасности в CRT._strdate

Синтаксис

errno_t _strdate_s(
   char *buffer,
   size_t size
);
errno_t _wstrdate_s(
   wchar_t *buffer,
   size_t size
);
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
Указатель на буфер, указывающий на форматированную строку даты.

size
Размер буфера в единицах символов.

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

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

Условия ошибок

buffer size Возврат Содержимое buffer
NULL (любые) EINVAL Не изменено
Не NULL (указывает на допустимый буфер) 0 EINVAL Не изменено
Не NULL (указывает на допустимый буфер) 0<size<9 EINVAL Пустая строка
Не NULL (указывает на допустимый буфер) size>= 9 0 Текущая дата, отформатированная, как указано в разделе «Примечания»

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

Если вы передаете недопустимое значение buffer, отличное от NULL, оно приводит к нарушению доступа, если size параметр больше девяти.

Передача значения больше size фактического размера результатов в переполнении буфера buffer .

Замечания

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

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

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

В C++использование этих функций упрощается перегрузками шаблонов. Перегрузки могут автоматически выводить длину буфера, что устраняет необходимость указания аргумента size . И они могут автоматически заменить небезопасные функции более новыми, более безопасными. Дополнительные сведения см. в разделе "Безопасные перегрузки шаблонов".

Версии библиотек отладки этих функций сначала заполняют буфер 0xFE. Чтобы отключить это поведение, используйте _CrtSetDebugFillThreshold.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Сопоставление подпрограмм универсального текста:

Подпрограмма 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.

См. также

Управление временем
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