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_s
time
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, EINVAL
wird 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 _CrtSetDebugFillThreshold
zum 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 newtime
und 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