Condividi tramite


mktime, _mktime32, _mktime64

Convertire l'ora locale a un valore del calendario.

time_t mktime(
   struct tm *timeptr 
);
__time32_t _mktime32(
   struct tm *timeptr 
);
__time64_t _mktime64(
   struct tm *timeptr 
);

Parametri

  • timeptr
    Puntatore per spostarsi struttura, vedere asctime.

Valore restituito

_mktime32 restituisce il tempo specificato del calendario codificato come valore di tipo time_t.Se il timeptr fa riferimento a una data prima di mezzanotte, il 1° gennaio 1970, o se l'ora del calendario non può essere rappresentato, restituzione dimktime32 _– 1 eseguito il cast nel tipo time_t.Quando si utilizza _mktime32 e se il timeptr fa riferimento a una data dopo il 03:14: 7 gennaio 19, 2038, L'ora UTC (Coordinated Universal (UTC) Time), restituirà – 1 eseguito il cast nel tipo time_t.

_mktime64 restituirà – 1 eseguito il cast al tipo __time64_t se il timeptr fa riferimento a una data dopo il 23:59: 59, il 31 dicembre, 3000, UTC.

Note

mktime, _mktime32 e le funzioni di _mktime64 consentono di convertire la struttura fornita di tempo (eventualmente incompleta) indicata da timeptr in una struttura completamente definita con valori normalizzati e quindi lo converte in un valore del calendario di time_t .Il tempo convertito corrisponde alla codifica come valori restituiti da tempo esecuzione.I valori originali dei componenti di tm_yday e di tm_wday della struttura di timeptr vengono ignorati e i valori originali degli altri componenti non sono limitati agli intervalli regolari.

mktime è una funzione inline che equivale a _mktime64, a meno che _USE_32BIT_TIME_T è definito, nel qual caso equivale a _mktime32.

Dopo una modifica in UTC, _mktime32 gestisce le date da mezzanotte, il 1° gennaio 1970, a 03:14: 07, il 19 gennaio 2038.date di handle di**_mktime64** da mezzanotte, dal 1° 1970 al 23 gennaio: 59:59, il 31 dicembre, 3000.Questa modifica può determinare queste funzioni a restituire -1 (cast a time_t, a __time32_t o a __time64_t) anche se la data specificata è all' intervallo.Ad esempio, se si è al Cairo, egitto), che è di due ore UTC, due ore in primo luogo viene sottratto dalla data specificata nel timeptr; ciò può inserire la data dell' intervallo.

Tali funzioni possono essere utilizzate per convalidare e compilati una struttura di tm .Se si riesce, queste funzioni impostare i valori di tm_wday e di tm_yday in base alle proprie esigenze e impostare gli altri componenti per rappresentare il tempo specificato del calendario, ma con i valori hanno dovuto a intervalli regolari.Il valore finale di tm_mday non è impostato fino a quando tm_mon e tm_year non vengano determinati.In specificare un'ora della struttura di tm , impostare il campo di tm_isdst :

  • Zero (0) per indicare che l'ora solare è attiva.

  • Un valore maggiore di 0 indica che l'ora legale è attiva.

  • Un valore minore di zero in modo che il calcolo di codice della libreria di runtime del linguaggio C se l'ora solare o l'ora legale è attiva.

La libreria di runtime C determinerà il comportamento di tempo di ora legale del giorno dalla variabile di ambiente La t-z .Se TZ non è impostato, la chiamata GetTimeZoneInformation dell' API Win32 viene utilizzata per ottenere informazioni sui ora legale del giorno dal sistema operativo.Se questa operazione non riesce, la raccolta si presuppone le regole degli Stati Uniti per implementare il calcolo dell' ora legale viene utilizzata.tm_isdst è un campo obbligatorio.Se non impostata, il valore viene definito e il valore restituito da queste funzioni sono imprevedibili.Se i punti di timeptr a una struttura di tm restituita da una chiamata precedente a asctime, gmtime, o localtime (o varianti di queste funzioni), il campo di tm_isdst contiene il valore corretto.

Si noti che utilizzo di gmtime e di localtime (e _gmtime32, _gmtime64, _localtime32e _localtime64) un solo buffer per thread per la conversione.Se si specifica questo buffer su mktime, a _mktime32 o a _mktime64, i contenuti precedenti vengono eliminati.

Queste funzioni convalidano il parametro.Se il timeptr è un puntatore null, il gestore non valido di parametro viene richiamato, come descritto Convalida dei parametriin.Se l'esecuzione è consentita per continuare, le funzioni restituiscono -1 e errno impostato su EINVAL.

Requisiti

routine

Intestazione di associazione

mktime

<time.h>

_mktime32

<time.h>

_mktime64

<time.h>

Per informazioni di compatibilità aggiuntive, vedere compatibilità nell' introduzione.

Librerie

tutte le versioni di Librerie di runtime del linguaggio 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" );
}

Esempio di output

Current time is Fri Apr 25 13:34:07 2003

In 20 days the time will be Thu May 15 13:34:07 2003

Equivalente .NET Framework

System:: DateTime:: DateTime

Vedere anche

Riferimenti

Gestione di tempo

asctime, _wasctime

gmtime, _gmtime32, _gmtime64

localtime, _localtime32, _localtime64

_mkgmtime, _mkgmtime32, _mkgmtime64

time, _time32, _time64