Freigeben über


asctime_s, _wasctime_s

Konvertieren Sie eine tm-Zeitstruktur in einer Zeichenfolge. Diese Funktionen sind Versionen von asctime, _wasctime mit Sicherheitsverbesserungen wie unter Sicherheitsfunktionen in der CRT beschrieben.

Syntax

errno_t asctime_s(
   char* buffer,
   size_t numberOfElements,
   const struct tm *tmSource
);
errno_t _wasctime_s(
   wchar_t* buffer,
   size_t numberOfElements
   const struct tm *tmSource
);
template <size_t size>
errno_t asctime_s(
   char (&buffer)[size],
   const struct tm *tmSource
); // C++ only
template <size_t size>
errno_t _wasctime_s(
   wchar_t (&buffer)[size],
   const struct tm *tmSource
); // C++ only

Parameter

buffer
Ein Zeiger auf einen Puffer zum Speichern des Zeichenfolgenergebnisses. Diese Funktion nimmt einen Zeiger an einem gültigen Speicherort mit einer von numberOfElements angegebenen Größe an.

numberOfElements
Die Größe des Puffers, der zum Speichern des Ergebnisses verwendet wird.

tmSource
Zeit-/Datumsstruktur. Diese Funktion nimmt einen Zeiger auf ein gültiges struct tm-Objekt an.

Rückgabewert

Null, wenn erfolgreich. Wenn ein Fehler auftritt, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, ist der Rückgabewert ein Fehlercode. Fehlercodes sind in ERRNO.H definiert. Weitere Informationen finden Sie unter errno Konstanten. Die jeweiligen Fehlercodes, die für jede Fehlerbedingung zurückgegeben werden, sind in folgender Tabelle aufgelistet.

Fehlerbedingungen

buffer numberOfElements tmSource Return Wert in buffer.
NULL Any Any EINVAL Not modified (Nicht geändert)
Nicht NULL (zeigt gültigen Speicher an) 0 Any EINVAL Not modified (Nicht geändert)
Nicht NULL 0<numberOfElements< 26 Any EINVAL Leere Zeichenfolge
Nicht NULL >= 26 NULL EINVAL Leere Zeichenfolge
Nicht NULL >= 26 Ungültige Zeitstruktur oder Zeitkomponentenwerte außerhalb des Bereichs EINVAL Leere Zeichenfolge

Hinweis

Fehlerbedingungen für wasctime_s ähneln denen für asctime_s. Der einzige Unterschied ist, dass die Größenbeschränkung in Wörtern angegeben wird.

Hinweise

Die asctime-Funktion konvertiert eine als Struktur gespeicherte Zeit in eine Zeichenfolge. Der tmSource Wert wird in der Regel aus einem Aufruf gmtime von oder localtime. Beide Funktionen können verwenden werden, um eine tm-Struktur wie in TIME.H definiert auszufüllen.

timeptr.member Wert
tm_hour Stunden seit Mitternacht (0-23)
tm_isdst Positiv, wenn Sommerzeit wirksam ist; 0, wenn die Sommerzeit nicht wirksam ist; negativ, wenn der Status der Sommerzeit unbekannt ist. Die C-Laufzeitbibliothek wendet die Regeln der Vereinigten Staaten an, um die Berechnung der Sommerzeit (DST, Daylight Saving Time) zu implementieren.
tm_mday Tag des Monats (1–31)
tm_min Minuten nach Stunde (0-59)
tm_mon Monat (0-11; Januar = 0)
tm_sec Sekunden nach Minute (0-59)
tm_wday Wochentag (0-6; Sonntag = 0)
tm_yday Tag des Jahres (0-365; 1. Januar = 0)
tm_year Jahr (aktuelles Jahr minus 1900)

Die konvertierte Zeichenfolge wird auch gemäß den lokalen Zeitzoneneinstellungen angepasst. Informationen zum Konfigurieren der Ortszeit finden Sie in den Funktionen , , _time32, , _ftime_time64, _ftime32,_ftime64 , undlocaltime_s , , . _localtime32_s_localtime64_stime Informationen zum Definieren der Zeitzonenumgebung und globalen Variablen finden Sie unter _tzset.

Das von asctime_s erstellte Zeichenfolgeergebnis enthält genau 26 Zeichen und sieht so aus: Wed Jan 2 02:03:55 1980\n\0. Eine 24-Stunden-Uhr wird verwendet. Alle Felder haben eine feste Breite. Die Zeilenwechsel- und Nullzeichen nehmen die letzten beiden Stellen der Zeichenfolge ein. Der übergebene numberOfElements Wert sollte mindestens diese Größe aufweisen. Wenn dies kleiner ist, EINVALwird ein Fehlercode zurückgegeben.

_wasctime_s ist eine Breitzeichenversion von asctime_s. _wasctime_s und asctime_s verhalten sich andernfalls identisch.

Die Debugbibliotheksversionen dieser Funktionen füllen zuerst den Puffer mit 0xFE. Verwenden Sie _CrtSetDebugFillThresholdzum Deaktivieren dieses Verhaltens .

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.

Generische Textroutinenzuordnung

TCHAR.H-Routine _UNICODE und _MBCS nicht definiert _MBCS definiert _UNICODE definiert
_tasctime_s asctime_s asctime_s _wasctime_s

Die Verwendung dieser Funktionen in C++ wird durch Überladungen (als Vorlagen vorhanden) vereinfacht. Überladungen können automatisch die Pufferlänge ableiten, sodass kein Größenargument angegeben werden muss. Weitere Informationen finden Sie unter Secure Template Overloads.

Anforderungen

Routine Erforderlicher Header
asctime_s <time.h>
_wasctime_s <time.h> oder <wchar.h>

Sicherheit

Wenn der Pufferzeiger nicht NULL und der Zeiger nicht auf einen gültigen Puffer zeigt, überschreibt die Funktion alles, was sich an der Position befindet. Dieser Fehler kann auch zu einer Zugriffsverletzung führen.

Wenn das übergebene Größenargument größer als die tatsächliche Puffergröße ist, kann ein Pufferüberlauf auftreten.

Beispiel

Dieses Programm platziert die Systemzeit in der langen ganzzahligen Zahl aclock, übersetzt sie in die Struktur newtimeund konvertiert sie dann in Zeichenfolgenform für die Ausgabe mithilfe der asctime_s Funktion.

// crt_asctime_s.c
#include <time.h>
#include <stdio.h>

struct tm newtime;
__time32_t aclock;

int main( void )
{
   char buffer[32];
   errno_t errNum;
   _time32( &aclock );   // Get time in seconds.
   _localtime32_s( &newtime, &aclock );   // Convert time to struct tm form.

   // Print local time as a string.

   errNum = asctime_s(buffer, 32, &newtime);
   if (errNum)
   {
       printf("Error code: %d", (int)errNum);
       return 1;
   }
   printf( "Current date and time: %s", buffer );
   return 0;
}
Current date and time: Wed May 14 15:30:17 2003

Siehe auch

Zeitverwaltung
ctime_s, , _ctime32_s_ctime64_s, _wctime_s, , _wctime32_s_wctime64_s
_ftime, _ftime32_ftime64
gmtime_s, _gmtime32_s_gmtime64_s
localtime_s, _localtime32_s_localtime64_s
time, _time32_time64
_tzset