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


ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s

Преобразуют значение времени в строку и настроить в соответствии с параметрами локального времени. Это версии ctime, _ctime64, _wctime, _wctime64 с усовершенствованиями безопасности, как описано в разделе Функции безопасности в CRT.

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

Параметры

  • [исходящий] buffer
    Должен быть достаточно велик для хранения 26 символов. Указатель на результирующую символьную строку или NULL, если:

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

    • Если используется значение _ctime32_s или _wctime32_s и time представляет дату после 03:14:07 19-ого января 2038 года.

    • Если используется значение _ctime64_s или _wctime64_s и time представляет дату после 23:59:59 31-ого декабря 3000 года.

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

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

  • [in] time
    Указатель на сохраненное время.

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

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

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

buffer

numberOfElements

time

Return

Значение в buffer

NULL

any

any

EINVAL

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

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

0

any

EINVAL

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

Не NULL

0< size < 26

any

EINVAL

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

Не NULL

>= 26

NULL

EINVAL

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

Не NULL

>= 26

< 0

EINVAL

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

Заметки

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

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

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

Преобразованная символьная строка также настраивается согласно параметрам зоны локального времени. Обратитесь к функциям time, _ftime и localtime32_s за сведениями о настройке местного времени и функции _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. Дополнительные сведения см. в разделе Безопасные перегрузки шаблонов.

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

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

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

См. также

Ссылки

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

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