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


_strtime_s, _wstrtime_s

Копирует текущее время в буфер. Эти функции — это версии с улучшениями безопасности, _wstrtimeкак описано в функциях безопасности в CRT._strtime

Синтаксис

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

Параметры

buffer
Буфер длиной не менее 10 символов, в который будет записано время.

numberOfElements
Размер буфера.

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

Нуль при успешном завершении.

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

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

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

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

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

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

Замечания

Эти функции представляют собой более безопасные версии _strtime и _wstrtime. Функция _strtime_s копирует текущее локальное время в буфер, на который указывает buffer. Время форматируется как hh:mm:ss , где hh два цифры, представляющие час в 24-часовой нотации, mm — это две цифры, представляющие минуты за час, и ss это две цифры, представляющие секунды. Например, строка 18:23:44 представляет 23 минуты и 44 секунды после 6 вечера. Буфер должен иметь не менее 9 байтов; Фактический размер указывается вторым параметром.

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

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

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

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

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

Подпрограмма TCHAR.H _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tstrtime_s _strtime_s _strtime_s _wstrtime_s

Требования

Маршрут Обязательный заголовок
_strtime_s <time.h>
_wstrtime_s <time.h> или <wchar.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

// strtime_s.c

#include <time.h>
#include <stdio.h>

int main()
{
    char tmpbuf[9];
    errno_t err;

    // Set time zone from TZ environment variable. If TZ is not set,
    // the operating system is queried to obtain the default value
    // for the variable.
    //
    _tzset();

    // Display operating system-style date and time.
    err = _strtime_s( tmpbuf, 9 );
    if (err)
    {
       printf("_strdate_s failed due to an invalid argument.");
      exit(1);
    }
    printf( "OS time:\t\t\t\t%s\n", tmpbuf );
    err = _strdate_s( tmpbuf, 9 );
    if (err)
    {
       printf("_strdate_s failed due to an invalid argument.");
       exit(1);
    }
    printf( "OS date:\t\t\t\t%s\n", tmpbuf );

}
OS time:            14:37:49
OS date:            04/25/03

См. также

Управление временем
asctime_s, _wasctime_s
ctime_s, , _ctime32_s_wctime_s_ctime64_s_wctime32_s,_wctime64_s
gmtime_s, , _gmtime32_s_gmtime64_s
localtime_s, , _localtime32_s_localtime64_s
mktime, , _mktime32_mktime64
time, , _time32_time64
_tzset