asctime_s
, _wasctime_s
Konvertieren Sie eine tm
-Zeitstruktur in einer Zeichenfolge. Diese Funktionen sind Versionen von asctime
, _wasctime
mit Sicherheitsverbesserungen, wie in sicherheitsfeatures im 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 | Beliebig | EINVAL |
Not modified (Nicht geändert) |
Nicht NULL |
0<numberOfElements < 26 |
Beliebig | 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. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the 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 "Sichere Vorlagenüberladungen".
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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Feedback senden und anzeigen für