ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s

Преобразуют значение времени в строку и настраивают его в соответствии с параметрами локального часового пояса. Эти функции — это версии ctime, _wctime_ctime64с улучшениями безопасности, _wctime64 как описано в функциях безопасности в CRT.

Синтаксис

errno_t ctime_s(
   char* buffer,
   size_t numberOfElements,
   const time_t *sourceTime
);
errno_t _ctime32_s(
   char* buffer,
   size_t numberOfElements,
   const __time32_t *sourceTime
);
errno_t _ctime64_s(
   char* buffer,
   size_t numberOfElements,
   const __time64_t *sourceTime )
;
errno_t _wctime_s(
   wchar_t* buffer,
   size_t numberOfElements,
   const time_t *sourceTime
);
errno_t _wctime32_s(
   wchar_t* buffer,
   size_t numberOfElements,
   const __time32_t *sourceTime
);
errno_t _wctime64_s(
   wchar_t* buffer,
   size_t numberOfElements,
   const __time64_t *sourceTime
);
template <size_t size>
errno_t _ctime32_s(
   char (&buffer)[size],
   const __time32_t *sourceTime
); // C++ only
template <size_t size>
errno_t _ctime64_s(
   char (&buffer)[size],
   const __time64_t *sourceTime
); // C++ only
template <size_t size>
errno_t _wctime32_s(
   wchar_t (&buffer)[size],
   const __time32_t *sourceTime
); // C++ only
template <size_t size>
errno_t _wctime64_s(
   wchar_t (&buffer)[size],
   const __time64_t *sourceTime
); // C++ only

Параметры

buffer
Должен быть достаточно большим для хранения 26 символов. Указатель на результат строки символа или NULL если:

  • sourceTime представляет дату перед полуночью 1-го января 1970 года, в формате UTC.

  • Если используется функция _ctime32_s или _wctime32_s, а sourceTime представляет дату после 23:59:59 18-го января 2038 года.

  • Если используется функция _ctime64_s или _wctime64_s и sourceTime представляет дату после 23:59:59 31-го декабря 3000 года (в формате UTC).

  • Если используются _ctime_s или _wctime_s, эти функции служат оболочками для предыдущих функций. См. раздел «Примечания».

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

sourceTime
Указатель на сохраненное время.

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

Нуль при успешном завершении. Если возникает сбой из-за недопустимого параметра, вызывается обработчик недопустимых параметров, как описано в разделе "Проверка параметров". Если продолжение выполнения разрешено, возвращается код ошибки. Коды ошибок определены в ERRNO. H; Список этих ошибок см. в разделе errno. Фактические коды ошибок, отображаемые для каждого условия ошибки, представлены в следующей таблице.

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

buffer numberOfElements sourceTime Возврат Значение в buffer
NULL любое любое EINVAL Не изменено
Не NULL (указывает на допустимый адрес в памяти) 0 любое EINVAL Не изменено
Не NULL 0< размер < 26 любое EINVAL Пустая строка
Не NULL >= 26 NULL EINVAL Пустая строка
Не NULL >= 26 < 0 EINVAL Пустая строка

Замечания

Функция ctime_s преобразует значение времени, хранящееся в виде time_t структуры, в символьную строку. Значение sourceTime обычно получается из вызова time, которое возвращает количество секунд, истекшее с полуночи (00:00:00), 1 января 1970 года, согласованное универсальное время (UTC). Строка возвращаемого значения содержит ровно 26 символов и имеет следующий вид:

Wed Jan 2 02:03:55 1980\n\0

Время в 24-часовом формате. Все поля имеют постоянную ширину. Символ новой строки ("\n") и нуль-символ ("\0") занимают две последние позиции строки.

Преобразованная символьная строка также настраивается согласно параметрам местного часового пояса. Сведения о настройке локального времени см. в разделе time, _ftimeи localtime функции. Дополнительные сведения об определении среды часового пояса и глобальных переменных см. в _tzset этой функции.

_wctime32_s и _wctime64_s — версии функций _ctime32_s и _ctime64_s для расширенных символов; возвращают указатель на строку из расширенных символов. В остальном поведение функций _ctime64_s, _wctime32_s и _wctime64_s совпадает с поведением функции _ctime32_s.

ctime_s — встраиваемая функция, которая принимает значение _ctime64_s, и time_t эквивалентна __time64_t. Если необходимо, чтобы компилятор принудительно интерпретировал time_t как старое 32-разрядное значение time_t, можно определить _USE_32BIT_TIME_T. Этот макрос приводит ctime_s к оценке _ctime32_s. Мы не рекомендуем использовать его, так как приложение может завершиться сбоем после 18 января 2038 г. и не допускается на 64-разрядных платформах.

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

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

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

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

Подпрограмма TCHAR.H _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tctime_s ctime_s ctime_s _wctime_s
_tctime32_s _ctime32_s _ctime32_s _wctime32_s
_tctime64_s _ctime64_s _ctime64_s _wctime64_s

Требования

Маршрут Обязательный заголовок
ctime_s, _ctime32_s, _ctime64_s <time.h>
_wctime_s, _wctime32_s, _wctime64_s <time.h> или <wchar.h>

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

Библиотеки

Все версии библиотек времени выполнения языка C.

Пример

// crt_wctime_s.c
// This program gets the current
// time in time_t form and then uses _wctime_s to
// display the time in string form.

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

#define SIZE 26

int main( void )
{
   time_t ltime;
   wchar_t buf[SIZE];
   errno_t err;

   time( &ltime );

   err = _wctime_s( buf, SIZE, &ltime );
   if (err != 0)
   {
      printf("Invalid Arguments for _wctime_s. Error Code: %d\n", err);
   }
   wprintf_s( L"The time is %s\n", buf );
}
The time is Fri Apr 25 13:03:39 2003

См. также

Управление временем
asctime_s, _wasctime_s
ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64
_ftime, _ftime32, _ftime64
gmtime_s, _gmtime32_s, _gmtime64_s
localtime_s, _localtime32_s, _localtime64_s
time, _time32, _time64