ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s

Przekonwertuj wartość czasu na ciąg i dostosuj ustawienia lokalnej strefy czasowej. Te funkcje to wersje programu ctime, _ctime64, _wctime64_wctime z ulepszeniami zabezpieczeń zgodnie z opisem w temacie Funkcje zabezpieczeń w narzędziu CRT.

Składnia

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

Parametry

buffer
Musi być wystarczająco duża, aby przechowywać 26 znaków. Wskaźnik do wyniku ciągu znaku lub NULL jeśli:

  • sourceTime reprezentuje datę przed północą, 1 stycznia 1970, UTC.

  • Jeśli używasz _ctime32_s lub _wctime32_s reprezentujesz sourceTime datę po 23:59:59 stycznia 18, 2038, UTC.

  • Jeśli używasz _ctime64_s wartości lub _wctime64_s i sourceTime reprezentujesz datę po 23:59:59, 31 grudnia 3000 czasu UTC.

  • Jeśli używasz _ctime_s funkcji lub _wctime_s, te funkcje są otokami poprzednich funkcji. Zobacz sekcję Uwagi.

numberOfElements
Rozmiar buforu.

sourceTime
Wskaźnik do przechowywanego czasu.

Wartość zwracana

Zero, jeśli się powiedzie. Jeśli wystąpi błąd z powodu nieprawidłowego parametru, wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w artykule Weryfikacja parametru. Jeśli wykonywanie jest dozwolone do kontynuowania, zostanie zwrócony kod błędu. Kody błędów są zdefiniowane w błędzie ERRNO. H; aby uzyskać listę tych błędów, zobacz errno. Rzeczywiste kody błędów zgłaszane dla każdego warunku błędu są wyświetlane w poniższej tabeli.

Warunki błędu

buffer numberOfElements sourceTime Zwrot Wartość w buffer
NULL dowolny dowolny EINVAL Nie zmodyfikowano
Nie NULL (wskazuje prawidłową pamięć) 0 dowolny EINVAL Nie zmodyfikowano
Nie NULL 0< rozmiar < 26 dowolny EINVAL Pusty ciąg
Nie NULL >= 26 NULL EINVAL Pusty ciąg
Nie NULL >= 26 < 0 EINVAL Pusty ciąg

Uwagi

Funkcja ctime_s konwertuje wartość czasu przechowywaną time_t jako strukturę na ciąg znaków. Wartość sourceTime jest zwykle uzyskiwana z wywołania metody time, która zwraca liczbę sekund, które upłynęły od północy (00:00:00), 1 stycznia 1970 r. skoordynowany uniwersalny czas (UTC). Ciąg wartości zwracanej zawiera dokładnie 26 znaków i ma postać:

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

Jest używany zegar 24-godzinny. Wszystkie pola mają stałą szerokość. Nowy znak wiersza ('\n') i znak null ('\0') zajmują ostatnie dwa pozycje ciągu.

Przekonwertowany ciąg znaków jest również dostosowywany zgodnie z ustawieniami lokalnej strefy czasowej. Aby uzyskać informacje na temat konfigurowania czasu lokalnego, zobacz timefunkcje , _ftimei localtime . Aby uzyskać szczegółowe informacje na temat definiowania środowiska strefy czasowej i zmiennych globalnych, zobacz _tzset funkcję .

_wctime32_si są wersją szerokoznakową _ctime32_s i _ctime64_s_wctime64_s ; zwraca wskaźnik do ciągu o szerokim znaku. W przeciwnym razie , _ctime64_s_wctime32_si _wctime64_s zachowuje się identycznie z _ctime32_s.

ctime_s jest funkcją śródliniową, która oblicza wartość _ctime64_s i time_t jest równoważna funkcji __time64_t. Jeśli musisz wymusić, aby kompilator interpretował time_t jako stary 32-bitowy time_telement , możesz zdefiniować element _USE_32BIT_TIME_T. To makro powoduje ctime_s ocenę wartości ._ctime32_s Nie zalecamy jej, ponieważ aplikacja może zakończyć się niepowodzeniem po 18 stycznia 2038 r. i nie jest dozwolona na platformach 64-bitowych.

W języku C++używanie tych funkcji jest uproszczone przez przeciążenia szablonu; przeciążenia mogą automatycznie wnioskować długość buforu, eliminując konieczność określenia argumentu rozmiaru. Aby uzyskać więcej informacji, zobacz Bezpieczne przeciążenia szablonów.

Wersje biblioteki debugowania tych funkcji najpierw wypełniają bufor 0xFE. Aby wyłączyć to zachowanie, użyj polecenia _CrtSetDebugFillThreshold.

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.

Mapowania procedur tekstu ogólnego

Procedura TCHAR.H _UNICODE i _MBCS niezdefiniowane _MBCS Zdefiniowane _UNICODE Zdefiniowane
_tctime_s ctime_s ctime_s _wctime_s
_tctime32_s _ctime32_s _ctime32_s _wctime32_s
_tctime64_s _ctime64_s _ctime64_s _wctime64_s

Wymagania

Procedura Wymagany nagłówek
ctime_s, _ctime32_s, _ctime64_s <time.h>
_wctime_s, _wctime32_s, _wctime64_s <time.h> lub <wchar.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Biblioteki

Wszystkie wersje bibliotek czasu wykonywania języka C.

Przykład

// 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

Zobacz też

Zarządzanie czasem
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