mktime
, _mktime32
, _mktime64
Converte l'ora locale in un valore di calendario.
Sintassi
time_t mktime(
struct tm *timeptr
);
__time32_t _mktime32(
struct tm *timeptr
);
__time64_t _mktime64(
struct tm *timeptr
);
Parametri
timeptr
Puntatore alla struttura temporale; vedere asctime
.
Valore restituito
_mktime32
restituisce l'ora del calendario specificata codificata come valore di tipo time_t
. Se timeptr
fa riferimento a una data precedente a mezzanotte, 1 gennaio 1970 o se l'ora del calendario non può essere rappresentata, _mktime32
restituisce -1 cast al tipo time_t
. Quando si usa _mktime32
e se timeptr
fa riferimento a una data successiva alle 23.59.59 del 18 gennaio 2038, coordinated universal time (UTC), verrà restituito il cast -1 al tipo time_t
.
_mktime64
restituirà il cast -1 al tipo __time64_t
se timeptr
fa riferimento a una data successiva alle 23.59.59 del 31 dicembre 3000 UTC.
Osservazioni:
Le mktime
funzioni , _mktime32
e _mktime64
converte la struttura temporale fornita (possibilmente incompleta) a timeptr
cui punta in una struttura completamente definita con valori normalizzati e quindi la converte in un time_t
valore di ora del calendario. L'ora convertita ha la stessa codifica dei valori restituiti dalla time
funzione. I valori originali dei tm_wday
componenti e tm_yday
della timeptr
struttura vengono ignorati e i valori originali degli altri componenti non sono limitati ai relativi intervalli normali.
mktime
è una funzione inline equivalente a _mktime64
, a meno che non _USE_32BIT_TIME_T
sia definita, nel qual caso equivale a _mktime32
.
Dopo una regolazione dell'ora UTC, _mktime32
gestisce le date dalla mezzanotte del 1 gennaio 1970 alle ore 23.59.59 del 18 gennaio 2038. _mktime64
gestisce le date dalla mezzanotte dell'1 gennaio 1970 alle ore 23.59.59 del 31 dicembre 3000. Come conseguenza della regolazione, queste funzioni potrebbero restituire -1 (con cast a time_t
, __time32_t
o __time64_t
) anche se la data specificata si trova nell'intervallo. Ad esempio, se ci si trova al Cairo, Egitto, che è di due ore prima dell'ORA UTC, due ore verranno sottratte per la prima volta dalla data specificata in timeptr
. La sottrazione potrebbe ora mettere la data non compreso nell'intervallo.
Queste funzioni possono essere usate per convalidare e compilare una tm
struttura. Se hanno esito positivo, queste funzioni impostano i valori di tm_wday
e tm_yday
come appropriato e impostano gli altri componenti in modo da rappresentare la data di calendario specificata, ma con intervalli normali imposti sui relativi valori. Il valore finale di tm_mday
non viene impostato fino a tm_mon
quando non viene determinato e tm_year
. Quando si specifica una struttura temporale tm
,impostare il campo tm_isdst
su:
Zero (0) per indicare che è attiva l'ora solare.
Un valore maggiore di 0 per indicare che è attiva l'ora legale.
Un valore minore di zero per fare in modo che il codice della libreria di runtime del linguaggio C calcoli se è attiva l'ora legale o l'ora solare.
La libreria di runtime C determinerà il comportamento dell'ora legale dalla variabile di TZ
ambiente. Se TZ
non è impostato, la chiamata GetTimeZoneInformation
API Win32 viene usata per ottenere le informazioni sull'ora legale dal sistema operativo. Se la chiamata ha esito negativo, la libreria presuppone che vengano utilizzate le regole Stati Uniti per l'implementazione del calcolo dell'ora legale. tm_isdst
è un campo obbligatorio. Se non impostato, il relativo valore resta non definito e il valore restituito da queste funzioni è imprevedibile. Se timeptr
punta a una tm
struttura restituita da una chiamata precedente a asctime
, gmtime
o localtime
(o varianti di queste funzioni), il tm_isdst
campo contiene il valore corretto.
Le gmtime
funzioni e localtime
(e _gmtime64
_gmtime32
, _localtime32
, e _localtime64
) usano un singolo buffer per ogni thread per la conversione. Se si fornisce questo buffer a mktime
, _mktime32
o _mktime64
, i contenuti precedenti verranno eliminati.
Queste funzioni convalidano il proprio parametro. Se timeptr
è un puntatore Null, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, le funzioni restituiranno -1 e imposteranno errno
su EINVAL
.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
mktime |
<time.h> |
_mktime32 |
<time.h> |
_mktime64 |
<time.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Librerie
Tutte le versioni delle librerie di runtime C.
Esempio
// 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" );
}
Output di esempio
Current time is Fri Apr 25 13:34:07 2003
In 20 days the time will be Thu May 15 13:34:07 2003
Vedi anche
Gestione orari
asctime
, _wasctime
gmtime
, _gmtime32
, _gmtime64
localtime
, _localtime32
, _localtime64
_mkgmtime
, _mkgmtime32
, _mkgmtime64
time
, _time32
, _time64