Condividi tramite


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 mktimefunzioni , _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, gmtimeo 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