Condividi tramite


Classe CTime

Rappresenta un'ora e una data assolute.

Sintassi

class CTime

Membri

Costruttori pubblici

Nome Descrizione
CTime::CTime Costruisce oggetti CTime in vari modi.

Metodi pubblici

Nome Descrizione
CTime::Format Converte un CTime oggetto in una stringa formattata, in base al fuso orario locale.
CTime::FormatGmt Converte un CTime oggetto in una stringa formattata, in base all'ora UTC.
CTime::GetAsDBTIMESTAMP Converte le informazioni sull'ora archiviate nell'oggetto CTime in una struttura DBTIMESTAMP compatibile con Win32.
CTime::GetAsSystemTime Converte le informazioni sull'ora archiviate nell'oggetto CTime in una struttura SYSTEMTIME compatibile con Win32.
CTime::GetCurrentTime Crea un CTime oggetto che rappresenta l'ora corrente (funzione membro statica).
CTime::GetDay Restituisce il giorno rappresentato dall'oggetto CTime .
CTime::GetDayOfWeek Restituisce il giorno della settimana rappresentato dall'oggetto CTime .
CTime::GetGmtTm Suddivide un CTime oggetto in componenti, in base all'ora UTC.
CTime::GetHour Restituisce l'ora rappresentata dall'oggetto CTime .
CTime::GetLocalTm Suddivide un CTime oggetto in componenti, in base al fuso orario locale.
CTime::GetMinute Restituisce il minuto rappresentato dall'oggetto CTime .
CTime::GetMonth Restituisce il mese rappresentato dall'oggetto CTime .
CTime::GetSecond Restituisce il secondo rappresentato dall'oggetto CTime .
CTime::GetTime Restituisce un valore __time64_t per l'oggetto specificato CTime .
CTime::GetYear Restituisce l'anno rappresentato dall'oggetto CTime .
CTime::Serialize64 Serializza i dati da o verso un archivio.

Operatori

Nome Descrizione
operator + - Questi operatori aggiungono e sottraggono CTimeSpan oggetti e CTime .
operator +=, -= Questi operatori aggiungono e sottraggono un CTimeSpan oggetto da e verso questo CTime oggetto.
operator = Operatore di assegnazione .
operator ==, < , e così via. Operatori di confronto.

Osservazioni:

CTime non dispone di una classe di base.

CTime i valori sono basati sull'ora UTC (Coordinated Universal Time), equivalente all'ora UTC (Coordinated Universal Time, GMT). Per informazioni su come viene determinato il fuso orario, vedere Gestione dell'ora.

Quando si crea un CTime oggetto, impostare il nDST parametro su 0 per indicare che l'ora solare è attiva o su un valore maggiore di 0 per indicare che l'ora legale è attiva o su un valore minore di zero per fare in modo che il codice della libreria di runtime C calcoli se l'ora solare o l'ora legale è attiva. tm_isdst è un campo obbligatorio. Se non è impostato, il valore non è definito e il valore restituito da mktime è imprevedibile. Se timeptr punta a una struttura tm restituita da una chiamata precedente a asctime_s, _gmtime_s o localtime_s, il tm_isdst campo contiene il valore corretto.

Una classe complementare, CTimeSpan, rappresenta un intervallo di tempo.

Le CTime classi e CTimeSpan non sono progettate per la derivazione. Poiché non sono presenti funzioni virtuali, le dimensioni degli CTime oggetti e CTimeSpan sono esattamente di 8 byte. La maggior parte delle funzioni membro è inline.

Nota

Il limite massimo della data è 31/12/3000. Il limite inferiore è 1/1/1970 12:00:00 GMT.

Per altre informazioni sull'uso CTimedi , vedere gli articoli Data e ora e Gestione dell'ora nella guida di riferimento alla libreria di runtime.

Nota

La CTime struttura è stata modificata da MFC 7.1 a MFC 8.0. Se si serializza una CTime struttura usando l'operatore << in MFC 8.0 o versione successiva, il file risultante non sarà leggibile nelle versioni precedenti di MFC.

Requisiti

Intestazione: atltime.h

Operatori di confronto CTime

Operatori di confronto.

bool operator==(CTime time) const throw();
bool operator!=(CTime time) const throw();
bool operator<(CTime time) const throw();
bool operator>(CTime time) const throw();
bool operator<=(CTime time) const throw();
bool operator>=(CTime time) const throw();

Parametri

time
L'oggetto CTime da confrontare.

Valore restituito

Questi operatori confrontano due volte assoluti e restituiscono TRUE se la condizione è true; altrimenti FAL edizione Standard.

Esempio

CTime t1 = CTime::GetCurrentTime();
CTime t2 = t1 + CTimeSpan(0, 1, 0, 0);    // 1 hour later
ATLASSERT(t1 != t2);
ATLASSERT(t1 < t2);
ATLASSERT(t1 <= t2);   

CTime::CTime

Crea un nuovo CTime oggetto inizializzato con l'ora specificata.

CTime() throw();
CTime(__time64_t time) throw();
CTime(int nYear, int nMonth, int nDay,
      int nHour, int nMin, int nSec, int nDST = -1);
CTime(WORD wDosDate, WORD wDosTime, int nDST = -1);
CTime(const SYSTEMTIME& st, int nDST = - 1) throw();
CTime(const FILETIME& ft, int nDST = - 1);
CTime(const DBTIMESTAMP& dbts, int nDST = -1) throw();

Parametri

timeSrc
Indica un CTime oggetto già esistente.

time
Valore __time64_t di ora, ovvero il numero di secondi dopo il 1° gennaio 1970 UTC. Si noti che questo valore verrà modificato in base all'ora locale. Ad esempio, se ci si trova a New York e si crea un CTime oggetto passando un parametro pari a 0, CTime::GetMonth restituirà 12.

nYear, nMonth, nDay, nHour, nMin, nSec
Indica i valori di data e ora da copiare nel nuovo CTime oggetto.

nDST
Indica se l'ora legale è attiva. Può avere uno dei tre valori seguenti:

  • nDST impostato su 0Standard time è attivo.

  • nDST impostato su un valore maggiore di 0Daylight risparmio tempo è attivo.

  • nDST impostato su un valore minore di 0Il valore predefinito. Calcola automaticamente se l'ora solare o l'ora legale è attiva.

wDosDate, wDosTime
Valori di data e ora MS-DOS da convertire in un valore di data/ora e copiati nel nuovo CTime oggetto.

San
Struttura SYSTEMTIME da convertire in un valore di data/ora e copiata nel nuovo CTime oggetto.

Ft
Struttura FILETIME da convertire in un valore di data/ora e copiata nel nuovo CTime oggetto.

dbts
Riferimento a una struttura DBTIMESTAMP contenente l'ora locale corrente.

Osservazioni:

Ogni costruttore è descritto di seguito:

  • CTime(); Costruisce un oggetto non inizializzato CTime . Questo costruttore consente di definire CTime matrici di oggetti. È consigliabile inizializzare tali matrici con tempi validi prima di usare.

  • CTime( const CTime& ); Costruisce un CTime oggetto da un altro CTime valore.

  • CTime( __time64_t ); Costruisce un CTime oggetto da un tipo di __time64_t . Questo costruttore prevede un'ora UTC e converte il risultato in un'ora locale prima di archiviare il risultato.

  • CTime( int, int, ...); Costruisce un CTime oggetto dai componenti dell'ora locale con ogni componente vincolato agli intervalli seguenti:

    Componente Intervallo
    nYear 1970-3000
    nMonth 1-12
    nDay 1-31
    nHour 0-23
    nMin 0-59
    nSec 0-59

    Questo costruttore esegue la conversione appropriata in formato UTC. La versione di debug della libreria di classi di Microsoft Foundation afferma se uno o più componenti temporali non sono compresi nell'intervallo. Prima di chiamare, è necessario convalidare gli argomenti. Questo costruttore prevede un'ora locale.

  • CTime( WORD, WORD ); Costruisce un CTime oggetto dai valori di data e ora MS-DOS specificati. Questo costruttore prevede un'ora locale.

  • CTime( const SYSTEMTIME& ); Costruisce un CTime oggetto da una SYSTEMTIME struttura. Questo costruttore prevede un'ora locale.

  • CTime( const FILETIME& ); Costruisce un CTime oggetto da una FILETIME struttura. Probabilmente non si userà CTime FILETIME direttamente l'inizializzazione. Se si utilizza un CFile oggetto per modificare un file, CFile::GetStatus recupera il timestamp del file tramite un CTime oggetto inizializzato con una FILETIME struttura. Questo costruttore presuppone un'ora in base all'ora UTC e converte automaticamente il valore in ora locale prima di archiviare il risultato.

    Nota

    Il costruttore che usa DBTIMESTAMP il parametro è disponibile solo quando è incluso OLEDB.h.

Per altre informazioni, vedere la struttura SYSTEMTIME e FILETIME in Windows SDK. Vedere anche la voce Data e ora MS-DOS in Windows SDK.

Esempio

time_t osBinaryTime;  // C run-time time (defined in <time.h>)
time(&osBinaryTime) ;  // Get the current time from the 
                         // operating system.
CTime time1; // Empty CTime. (0 is illegal time value.)
CTime time2 = time1; // Copy constructor.
CTime time3(osBinaryTime);  // CTime from C run-time time
CTime time4(1999, 3, 19, 22, 15, 0); // 10:15PM March 19, 1999   

CTime::Format

Chiamare questa funzione membro per creare una rappresentazione formattata del valore di data e ora.

CString Format(LPCTSTR pszFormat) const;
CString Format(UINT nFormatID) const;

Parametri

pszFormat
Stringa di formattazione simile alla printf stringa di formattazione. I codici di formattazione, preceduti da un segno percentuale (%) vengono sostituiti dal componente corrispondente CTime . Gli altri caratteri nella stringa di formattazione vengono copiati senza modifiche alla stringa restituita. Per un elenco di codici di formattazione, vedere la funzione di runtime strftime .

nFormatID
ID della stringa che identifica questo formato.

Valore restituito

Oggetto CString che contiene l'ora formattata.

Osservazioni:

Se lo stato di questo CTime oggetto è Null, il valore restituito è una stringa vuota.

Questo metodo genera un'eccezione se il valore di data e ora per il formato non è compreso tra mezzanotte, 1 gennaio 1970 e 31 dicembre 3000 utc (Universal Coordinated Time).

Esempio

CTime t(1999, 3, 19, 22, 15, 0); 
// 10:15 PM March 19, 1999
CString s = t.Format(_T("%A, %B %d, %Y"));
ATLASSERT(s == _T("Friday, March 19, 1999"));   

CTime::FormatGmt

Genera una stringa formattata che corrisponde a questo CTime oggetto.

CString FormatGmt(LPCTSTR pszFormat) const;
CString FormatGmt(UINT nFormatID) const;

Parametri

pszFormat
Specifica una stringa di formattazione simile alla printf stringa di formattazione. Per informazioni dettagliate, vedere la funzione di runtime strftime .

nFormatID
ID della stringa che identifica questo formato.

Valore restituito

Oggetto CString che contiene l'ora formattata.

Osservazioni:

Il valore dell'ora non viene convertito e quindi riflette l'ora UTC.

Questo metodo genera un'eccezione se il valore di data e ora per il formato non è compreso tra mezzanotte, 1 gennaio 1970 e 31 dicembre 3000 utc (Universal Coordinated Time).

Esempio

Vedere l'esempio per CTime::Format.

CTime::GetAsDBTIMESTAMP

Chiamare questa funzione membro per convertire le informazioni sull'ora archiviate nell'oggetto CTime in una struttura DBTIMESTAMP compatibile con Win32.

bool GetAsDBTIMESTAMP(DBTIMESTAMP& dbts) const throw();

Parametri

dbts
Riferimento a una struttura DBTIMESTAMP contenente l'ora locale corrente.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Osservazioni:

Archivia l'ora risultante nella struttura dbts a cui si fa riferimento. La DBTIMESTAMP struttura dei dati inizializzata da questa funzione avrà il relativo fraction membro impostato su zero.

Esempio

CTime t = CTime::GetCurrentTime();
DBTIMESTAMP ts;
t.GetAsDBTIMESTAMP(ts); // Retrieves the time in t into the ts structure

CTime::GetAsSystemTime

Chiamare questa funzione membro per convertire le informazioni sull'ora archiviate nell'oggetto CTime in una struttura SYSTEMTIME compatibile con Win32.

bool GetAsSystemTime(SYSTEMTIME& st) const throw();

Parametri

timeDest
Riferimento a una struttura SYSTEMTIME che conterrà il valore di data/ora convertito dell'oggetto CTime .

Valore restituito

TRUE se l'operazione riesce; in caso contrario, FALSE.

Osservazioni:

GetAsSystemTimearchivia l'ora risultante nella struttura timeDest a cui si fa riferimento. La SYSTEMTIME struttura dei dati inizializzata da questa funzione avrà il relativo wMilliseconds membro impostato su zero.

Esempio

// Convert CTime to FILETIME
CTime time(CTime::GetCurrentTime());
SYSTEMTIME timeDest;
time.GetAsSystemTime(timeDest);
FILETIME fileTime;
::SystemTimeToFileTime(&timeDest, &fileTime);   

CTime::GetCurrentTime

Restituisce un CTime oggetto che rappresenta l'ora corrente.

static CTime WINAPI GetCurrentTime() throw();

Osservazioni:

Restituisce la data e l'ora di sistema correnti nell'ora UTC (Coordinated Universal Time).

Esempio

CTime t = CTime::GetCurrentTime();   

CTime::GetDay

Restituisce il giorno rappresentato dall'oggetto CTime .

int GetDay() const throw();

Valore restituito

Restituisce il giorno del mese, in base all'ora locale, nell'intervallo da 1 a 31.

Osservazioni:

Questa funzione chiama GetLocalTm, che usa un buffer interno allocato in modo statico. I dati in questo buffer vengono sovrascritti a causa delle chiamate ad altre CTime funzioni membro.

Esempio

// Example for CTime::GetDay, CTime::GetMonth, and CTime::GetYear
CTime t(1999, 3, 19, 22, 15, 0); // 10:15 PM March 19, 1999
ATLASSERT(t.GetDay() == 19);
ATLASSERT(t.GetMonth() == 3);
ATLASSERT(t.GetYear() == 1999);

CTime::GetDayOfWeek

Restituisce il giorno della settimana rappresentato dall'oggetto CTime .

int GetDayOfWeek() const throw();

Valore restituito

Restituisce il giorno della settimana in base all'ora locale; 1 = domenica, 2 = lunedì, a 7 = sabato.

Osservazioni:

Questa funzione chiama GetLocalTm, che usa un buffer allocato in modo statico interno. I dati in questo buffer vengono sovrascritti a causa delle chiamate ad altre CTime funzioni membro.

Esempio

// Print out the day of the week using localized day name
UINT DayOfWeek[] = {
   LOCALE_SDAYNAME7,   // Sunday
   LOCALE_SDAYNAME1,   
   LOCALE_SDAYNAME2,
   LOCALE_SDAYNAME3,
   LOCALE_SDAYNAME4, 
   LOCALE_SDAYNAME5, 
   LOCALE_SDAYNAME6   // Saturday
};
TCHAR strWeekday[256];
CTime time(CTime::GetCurrentTime());   // Initialize CTime with current time
::GetLocaleInfo(LOCALE_USER_DEFAULT,   // Get string for day of the week from system
   DayOfWeek[time.GetDayOfWeek()-1],   // Get day of week from CTime
   strWeekday, sizeof(strWeekday) / sizeof(strWeekday[0]));
ATLTRACE(_T("%s\n"), strWeekday);               // Print out day of the week   

CTime::GetGmtTm

Ottiene uno struct tm che contiene una scomposizione del tempo contenuto in questo CTime oggetto.

struct tm* GetGmtTm(struct tm* ptm) const;

Parametri

Ptm
Punta a un buffer che riceverà i dati relativi all'ora. Se questo puntatore è NULL, viene generata un'eccezione.

Valore restituito

Puntatore a uno struct tm compilato come definito nel file di inclusione TIME.H. Vedere gmtime, _gmtime32 _gmtime64 per il layout della struttura.

Osservazioni:

GetGmtTm restituisce l'ora UTC.

ptm non può essere NULL. Se si desidera ripristinare il comportamento precedente, in cui ptm potrebbe essere NULL per indicare che deve essere usato un buffer allocato statico interno, quindi non definire _edizione StandardCURE_ATL.

Esempio

// Compute difference between local time and GMT
CTime time(CTime::GetCurrentTime());
tm t1, t2;
time.GetLocalTm(&t1);
time.GetGmtTm(&t2);

ATLTRACE(_T("Difference between local time and GMT is %d hours.\n"), 
   t1.tm_hour - t2.tm_hour);   

CTime::GetHour

Restituisce l'ora rappresentata dall'oggetto CTime .

int GetHour() const throw();

Valore restituito

Restituisce l'ora, in base all'ora locale, nell'intervallo compreso tra 0 e 23.

Osservazioni:

Questa funzione chiama GetLocalTm, che usa un buffer allocato in modo statico interno. I dati in questo buffer vengono sovrascritti a causa delle chiamate ad altre CTime funzioni membro.

Esempio

// Example for CTime::GetHour, CTime::GetMinute, and CTime::GetSecond
CTime t(1999, 3, 19, 22, 15, 0); // 10:15 PM March 19, 1999
ATLASSERT(t.GetSecond() == 0);
ATLASSERT(t.GetMinute() == 15);
ATLASSERT(t.GetHour() == 22);   

CTime::GetLocalTm

Ottiene uno struct tm contenente una scomposizione del tempo contenuto in questo CTime oggetto.

struct tm* GetLocalTm(struct tm* ptm) const;

Parametri

Ptm
Punta a un buffer che riceverà i dati relativi all'ora. Se questo puntatore è NULL, viene generata un'eccezione.

Valore restituito

Puntatore a uno struct tm compilato come definito nel file di inclusione TIME.H. Vedere gmtime, _gmtime32 _gmtime64 per il layout della struttura.

Osservazioni:

GetLocalTm restituisce l'ora locale.

ptm non può essere NULL. Se si desidera ripristinare il comportamento precedente, in cui ptm potrebbe essere NULL per indicare che deve essere usato un buffer allocato statico interno, quindi non definire _edizione StandardCURE_ATL.

Esempio

CTime t(1999, 3, 19, 22, 15, 0); // 10:15PM March 19, 1999
tm osTime;  // A structure containing time elements.
t.GetLocalTm(&osTime);
ATLASSERT(osTime.tm_mon == 2); // Note zero-based month!   

CTime::GetMinute

Restituisce il minuto rappresentato dall'oggetto CTime .

int GetMinute() const throw();

Valore restituito

Restituisce il minuto, in base all'ora locale, compreso nell'intervallo compreso tra 0 e 59.

Osservazioni:

Questa funzione chiama GetLocalTm, che usa un buffer allocato in modo statico interno. I dati in questo buffer vengono sovrascritti a causa delle chiamate ad altre CTime funzioni membro.

Esempio

Vedere l'esempio per GetHour.

CTime::GetMonth

Restituisce il mese rappresentato dall'oggetto CTime .

int GetMonth() const throw();

Valore restituito

Restituisce il mese, in base all'ora locale, nell'intervallo da 1 a 12 (1 = gennaio).

Osservazioni:

Questa funzione chiama GetLocalTm, che usa un buffer allocato in modo statico interno. I dati in questo buffer vengono sovrascritti a causa delle chiamate ad altre CTime funzioni membro.

Esempio

Vedere l'esempio per GetDay.

CTime::GetSecond

Restituisce il secondo rappresentato dall'oggetto CTime .

int GetSecond() const throw();

Valore restituito

Restituisce il secondo, in base all'ora locale, compreso nell'intervallo da 0 a 59.

Osservazioni:

Questa funzione chiama GetLocalTm, che usa un buffer allocato in modo statico interno. I dati in questo buffer vengono sovrascritti a causa delle chiamate ad altre CTime funzioni membro.

Esempio

Vedere l'esempio per GetHour.

CTime::GetTime

Restituisce un valore __time64_t per l'oggetto specificato CTime .

__time64_t GetTime() const throw();

Valore restituito

GetTime restituirà il numero di secondi tra l'oggetto corrente CTime e il 1° gennaio 1970.

Esempio

CTime t(2005, 10, 20, 23, 50, 0); // 11:50 PM October 20, 2005
time_t osBinaryTime = t.GetTime();  // time_t defined in <time.h>

_tprintf_s(_T("time_t = %ld\n"), osBinaryTime);

CTime::GetYear

Restituisce l'anno rappresentato dall'oggetto CTime .

int GetYear();

Valore restituito

Restituisce l'anno, in base all'ora locale, nell'intervallo compreso tra il 1° gennaio 1970 e il 18 gennaio 2038 (incluso).

Osservazioni:

Questa funzione chiama GetLocalTm, che usa un buffer allocato in modo statico interno. I dati in questo buffer vengono sovrascritti a causa delle chiamate ad altre CTime funzioni membro.

Esempio

Vedere l'esempio per GetDay.

CTime::operator =

Operatore di assegnazione .

CTime& operator=(__time64_t time) throw();

Parametri

time
Nuovo valore di data/ora.

Valore restituito

Oggetto aggiornato CTime .

Osservazioni:

Questo operatore di assegnazione di overload copia l'ora di origine in questo CTime oggetto. L'archiviazione temporale interna in un CTime oggetto è indipendente dal fuso orario. La conversione del fuso orario non è necessaria durante l'assegnazione.

CTime::operator +, -

Questi operatori aggiungono e sottraggono CTimeSpan oggetti e CTime .

CTime operator+(CTimeSpan timeSpan) const throw();
CTime operator-(CTimeSpan timeSpan) const throw();
CTimeSpan operator-(CTime time) const throw();

Parametri

Timespan
Oggetto CTimeSpan da aggiungere o sottrarre.

time
Oggetto CTime da sottrarre.

Valore restituito

Oggetto CTime o CTimeSpan che rappresenta il risultato dell'operazione.

Osservazioni:

CTime gli oggetti rappresentano l'ora assoluta, CTimeSpan gli oggetti rappresentano l'ora relativa. I primi due operatori consentono di aggiungere e sottrarre CTimeSpan oggetti da e CTime verso oggetti . Il terzo operatore consente di sottrarre un CTime oggetto da un altro per restituire un CTimeSpan oggetto.

Esempio

CTime t1(1999, 3, 19, 22, 15, 0); // 10:15 PM March 19, 1999
CTime t2(1999, 3, 20, 22, 15, 0); // 10:15 PM March 20, 1999
CTimeSpan ts = t2 - t1;             // Subtract 2 CTimes
ATLASSERT(ts.GetTotalSeconds() == 86400L);
ATLASSERT((t1 + ts) == t2);       // Add a CTimeSpan to a CTime.
ATLASSERT((t2 - ts) == t1);       // Subtract a CTimeSpan from a CTime.   

CTime::operator +=, -=

Questi operatori aggiungono e sottraggono un CTimeSpan oggetto da e verso questo CTime oggetto.

CTime& operator+=(CTimeSpan span) throw();
CTime& operator-=(CTimeSpan span) throw();

Parametri

Rotazione
Oggetto CTimeSpan da aggiungere o sottrarre.

Valore restituito

Oggetto aggiornato CTime .

Osservazioni:

Questi operatori consentono di aggiungere e sottrarre un CTimeSpan oggetto a e da questo CTime oggetto.

Esempio

CTime t(1999, 3, 19, 22, 15, 0); // 10:15 PM March 19, 1999
t += CTimeSpan(0, 1, 0, 0);      // 1 hour exactly
ATLASSERT(t.GetHour() == 23);   

CTime::Serialize64

Nota

Questo metodo è disponibile solo nei progetti MFC.

Serializza i dati associati alla variabile membro da o verso un archivio.

CArchive& Serialize64(CArchive& ar);

Parametri

Ar
Oggetto CArchive da aggiornare.

Valore restituito

Oggetto aggiornato CArchive .

Vedi anche

asctime_s, _wasctime_s
_ftime_s, _ftime32_s, _ftime64_s
gmtime_s, _gmtime32_s, _gmtime64_s
localtime_s, _localtime32_s, _localtime64_s
strftime, wcsftime, _strftime_l, _wcsftime_l
time, _time32, _time64
Classe CTimeSpan
Grafico della gerarchia
Classi condivise ATL/MFC