mktime, _mktime32, _mktime64
Konvertieren Sie die lokale Zeit zu einem Wert im Kalender.
time_t mktime(
struct tm *timeptr
);
__time32_t _mktime32(
struct tm *timeptr
);
__time64_t _mktime64(
struct tm *timeptr
);
Parameter
- timeptr
Zeiger, um Zeit Struktur zu bewerten. Weitere Informationen finden Sie unter asctime.
Rückgabewert
_mktime32 gibt die Zeit zurück, die den angegebenen Kalender als Wert vom Typ time_tcodiert ist.Wenn timeptr ein Datum vor Mitternacht, am 1. Januar 1970 verweist oder wenn der Kalender Zeit nicht dargestellt werden kann, gibt _mktime32 1 umgewandelt, um time_tTyp zurück.Wenn _mktime32 verwendet wird und wenn timeptr ein Datum nach 03:14 Uhr verweist: Am 7. Januar 19 2038, koordinierte Weltzeit (Coordinated Universal Time, UTC) gibt es 1 umgewandelt, um time_tTyp zurück.
_mktime64 gibt 1 __time64_t umgewandelt, um die Eingabe zurück, wenn timeptr ein Datum nach 23:59 Uhr verweist: 59 3000 am 31. Dezember, UTC.
Hinweise
mktime, _mktime32 und _mktime64 Funktionen konvertieren, die angegebene Zeit Struktur dargestellt) unvollständig (möglicherweise durch den timeptr in eine vollständig definierte Struktur mit normalisierten Werte konvertiert und anschließend in einen time_t Kalender zeitwert.Die konvertierte aktuelle Uhrzeit hat dieselbe Codierung, die die Werte, die von Zeit zurückgegebenen arbeiten.Die ursprünglichen Werte der tm_wday und tm_yday Komponenten der timeptr Struktur werden ignoriert, und die ursprünglichen Werte der anderen Komponenten werden nicht auf ihre Normbereichen beschränkt.
mktime ist eine Inlinefunktion, die _mktime64entspricht, es sei denn, _USE_32BIT_TIME_T definiert ist. In diesem Fall wird in _mktime32entspricht.
Nach einer Anpassung in UTC, rührt von _mktime32 am 1. Januar 1970 Mitternacht Handles in 03:14: 07 am 19. Januar 2038._mktime64 Handles rührt von Mitternacht, dem 1. 1970 bis zum 23. Januar: 59:59 3000 am 31. Dezember.Diese Anpassung kann dieser Features -1 zurückzugeben (Typumwandlung in time_t, __time32_t oder __time64_t), obwohl das Datum, das Sie angeben, innerhalb des Bereichs liegt.Wenn Sie z. B. in Kairo sind, wird das Ägypten zwei Stunden vor UTC ist, zwei Stunden subtrahiert wird erst nach Datum, das Sie im timeptrangeben. Dies wird möglicherweise jetzt das Datum außerhalb des gültigen Bereichs.
Diese Funktionen werden verwendet werden, um eine TM Struktur zu untersuchen und zu füllen.Bei Erfolg wird diese Funktionen die Werte von tm_wday und ggf. tm_yday die anderen Komponenten fest, und legen Sie fest, dass die angegebene Zeit der Kalender, jedoch mit ihren Werten darstellen, die den Normbereichen durchgesetzt wurden.Der endgültige Wert von tm_mday ist nicht festgelegt, bis tm_mon und tm_year spezifisch sind.Wenn Sie eine Struktur TM Zeit angibt, legen Sie das tm_isdst Feld fest:
Mit 0 (null), wenn Normalzeit gültig ist.
Ein Wert größer als 0, um anzugeben, dass die Sommerzeit gültig ist.
Ein Wert kleiner als Null, wenn die Berechnung des C-Laufzeitbibliotheks-Code, ob die Standardzeit oder Sommerzeit gültig ist.
Die C-Laufzeitbibliothek bestimmt das Verhalten von der Sommerzeit TZ Umgebungsvariablen.Wenn TZ nicht festgelegt ist, wird der Win32 API-Aufruf GetTimeZoneInformation die Sommerzeit verwendet wird, um Informationen vom Betriebssystem abgerufen werden.Wenn dies fehlschlägt, geht die Bibliothek an, dass die der Vereinigten Staaten Regeln zum Implementieren der Berechnung der Sommerzeit verwendet werden.tm_isdst ist ein Pflichtfeld.Wenn dies nicht festgelegt ist, wird ihr Wert undefined und der Rückgabewert von diesen Funktionen sind unvorhersehbar.Wenn timeptr zu einer TM Struktur zeigt, die durch einen vorherigen Aufruf von asctime, gmtimeoder localtime zurückgegeben wird (oder Varianten dieser Funktionen), enthält das Feld tm_isdst den richtigen Wert.
Beachten Sie, dass diese gmtime und localtime (und _gmtime32, _gmtime64_localtime32, und ein einzelner Puffer verwenden) _localtime64pro Thread für die Konvertierung.Wenn Sie diesen Puffer an mktime, _mktime32 oder _mktime64bereitstellen, werden die vorherigen Inhalte gelöscht.
Diese Funktionen überprüfen ihren Parametern.Wenn timeptr ein NULL-Zeiger ist, wird der Ereignishandler aufgerufen, z. B. ungültige Parameter in Parametervalidierungbeschrieben.Wenn die Ausführung ermöglicht wird, um fortzufahren, geben die Funktionen festlegen und -1 errno zu EINVALzurück.
Anforderungen
Routine |
Erforderlicher Header |
---|---|
mktime |
<time.h> |
_mktime32 |
<time.h> |
_mktime64 |
<time.h> |
Um Kompatibilität zusätzlichen Informationen finden Sie unter Kompatibilität in der Einführung.
Bibliotheken
Alle Versionen Cs.
Beispiel
// crt_mktime.c
/* The example takes a number of days
* as input and returns the time, the current
* date, and the specified number of days.
*/
#include <time.h>
#include <stdio.h>
int main( void )
{
struct tm when;
__time64_t now, result;
int days;
char buff[80];
time( &now );
_localtime64_s( &when, &now );
asctime_s( buff, sizeof(buff), &when );
printf( "Current time is %s\n", buff );
days = 20;
when.tm_mday = when.tm_mday + days;
if( (result = mktime( &when )) != (time_t)-1 ) {
asctime_s( buff, sizeof(buff), &when );
printf( "In %d days the time will be %s\n", days, buff );
} else
perror( "mktime failed" );
}
Beispielausgabe
Current time is Fri Apr 25 13:34:07 2003
In 20 days the time will be Thu May 15 13:34:07 2003
.NET Framework-Entsprechung
System:: DateTime:: DateTime
Siehe auch
Referenz
localtime, _localtime32, _localtime64