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 CTime
di , 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; in caso contrario FALSE.
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 inizializzatoCTime
. Questo costruttore consente di definireCTime
matrici di oggetti. È consigliabile inizializzare tali matrici con tempi validi prima di usare.CTime( const CTime& );
Costruisce unCTime
oggetto da un altroCTime
valore.CTime( __time64_t );
Costruisce unCTime
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 unCTime
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 unCTime
oggetto dai valori di data e ora MS-DOS specificati. Questo costruttore prevede un'ora locale.CTime( const SYSTEMTIME& );
Costruisce unCTime
oggetto da unaSYSTEMTIME
struttura. Questo costruttore prevede un'ora locale.CTime( const FILETIME& );
Costruisce unCTime
oggetto da unaFILETIME
struttura. Probabilmente non si useràCTime FILETIME
direttamente l'inizializzazione. Se si utilizza unCFile
oggetto per modificare un file,CFile::GetStatus
recupera il timestamp del file tramite unCTime
oggetto inizializzato con unaFILETIME
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:
GetAsSystemTime
archivia 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 vuole ripristinare il comportamento precedente, in cui ptm potrebbe essere NULL per indicare che deve essere usato un buffer interno allocato in modo statico, _SECURE_ATL non definito.
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 vuole ripristinare il comportamento precedente, in cui ptm potrebbe essere NULL per indicare che deve essere usato un buffer interno allocato in modo statico, _SECURE_ATL non definito.
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
intervallo di tempo
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