Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Преобразуют значение времени в строку и настраивают его в соответствии с параметрами локального часового пояса. Эти функции — это версии ctime, _ctime64_wctimeс улучшениями безопасности, _wctime64 как описано в функциях безопасности в CRT.
Синтаксис
errno_t ctime_s( // See note in remarks section about linkage
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( // See note in remarks section about linkage
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.
Замечание
При использовании пакета SDK для Windows версии 10.0.26100.6901 и Visual Studio 2026 или более поздней версии и ctime_s_wctime_s больше не static inline (внутренняя компоновка). Вместо этого они inline (внешняя компоновка).
Чтобы вернуться к предыдущему поведению, #define _STATIC_INLINE_UCRT_FUNCTIONS=1 прежде чем включать любые заголовки CRT. По умолчанию параметр _STATIC_INLINE_UCRT_FUNCTIONS имеет значение 0.
Это изменение повышает соответствие UCRT стандарту C++ и улучшает совместимость с модулями C++.
Сопоставления подпрограмм универсального текста
| Подпрограмма 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( <ime );
err = _wctime_s( buf, SIZE, <ime );
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