Classe COleDateTime

Incapsula il DATE tipo di dati utilizzato nell'automazione OLE.

Sintassi

class COleDateTime

Membri

Costruttori pubblici

Nome Descrizione
COleDateTime::COleDateTime Costruisce un oggetto COleDateTime.

Metodi pubblici

Nome Descrizione
COleDateTime::Format Genera una rappresentazione di stringa formattata di un COleDateTime oggetto .
COleDateTime::GetAsDBTIMESTAMP Chiamare questo metodo per ottenere l'ora nell'oggetto COleDateTime come struttura di DBTIMESTAMP dati.
COleDateTime::GetAsSystemTime Chiamare questo metodo per ottenere l'ora nell'oggetto COleDateTime come struttura di dati SYSTEMTIME .
COleDateTime::GetAsUDATE Chiamare questo metodo per ottenere l'ora in COleDateTime come struttura di UDATE dati.
COleDateTime::GetCurrentTime Crea un COleDateTime oggetto che rappresenta l'ora corrente (funzione membro statica).
COleDateTime::GetDay Restituisce il giorno in cui l'oggetto COleDateTime rappresenta (1 - 31).
COleDateTime::GetDayOfWeek Restituisce il giorno della settimana rappresentato da questo COleDateTime oggetto (Domenica = 1).
COleDateTime::GetDayOfYear Restituisce il giorno dell'anno rappresentato da questo COleDateTime oggetto (1 gennaio = 1).
COleDateTime::GetHour Restituisce l'ora COleDateTime rappresentata dall'oggetto (0 - 23).
COleDateTime::GetMinute Restituisce il minuto COleDateTime rappresentato dall'oggetto (da 0 a 59).
COleDateTime::GetMonth Restituisce il mese COleDateTime rappresentato dall'oggetto (1 - 12).
COleDateTime::GetSecond Restituisce il secondo COleDateTime oggetto rappresentato da (0 - 59).
COleDateTime::GetStatus Ottiene lo stato (validità) dell'oggetto COleDateTime .
COleDateTime::GetYear Restituisce l'anno rappresentato da questo COleDateTime oggetto.
COleDateTime::P arseDateTime Legge un valore di data/ora da una stringa e imposta il valore di COleDateTime.
COleDateTime::SetDate Imposta il valore di questo COleDateTime oggetto sul valore di sola data specificato.
COleDateTime::SetDateTime Imposta il valore di questo COleDateTime oggetto sul valore di data/ora specificato.
COleDateTime::SetStatus Imposta lo stato (validità) dell'oggetto COleDateTime .
COleDateTime::SetTime Imposta il valore di questo COleDateTime oggetto sul valore di sola ora specificato.

Operatori pubblici

Nome Descrizione
COleDateTime::operator ==, COleDateTime::operator e così via <. Confrontare due COleDateTime valori.
COleDateTime::operator +, COleDateTime::operator - Aggiungere e sottrarre COleDateTime valori.
COleDateTime::operator +=, COleDateTime::operator -= Aggiungere e sottrarre un COleDateTime valore da questo COleDateTime oggetto.
COleDateTime::operator = Copia un COleDateTime valore.
COleDateTime::operator DATE, COleDateTime::operator Date* Converte un COleDateTime valore in un DATE oggetto o .DATE*

Membri dati pubblici

Nome Descrizione
COleDateTime::m_dt Contiene l'oggetto sottostante DATE per questo COleDateTime oggetto.
COleDateTime::m_status Contiene lo stato di questo COleDateTime oggetto.

Osservazioni:

COleDateTime non dispone di una classe di base.

È uno dei tipi possibili per il tipo di dati VARIANT di automazione OLE. Un COleDateTime valore rappresenta un valore di data e ora assoluto.

Il DATE tipo viene implementato come valore a virgola mobile. I giorni vengono misurati dal 30 dicembre 1899, a mezzanotte. La tabella seguente illustra alcune date e i relativi valori associati:

Data Valore
29 dicembre 1899, mezzanotte -1.0
29 dicembre 1899, 6 -1.25
30 dicembre 1899, mezzanotte 0.0
31 dicembre 1899, mezzanotte 1.0
1 gennaio 1900, 6 2.25

Attenzione

Nella tabella precedente, anche se i valori del giorno diventano negativi prima della mezzanotte del 30 dicembre 1899, i valori di ora del giorno non lo fanno. Ad esempio, 6:00 AM è sempre rappresentato da un valore frazionaria 0,25 indipendentemente dal fatto che l'intero che rappresenta il giorno sia positivo (dopo il 30 dicembre 1899) o negativo (prima del 30 dicembre 1899). Ciò significa che un semplice confronto a virgola mobile ordina erroneamente un oggetto COleDateTime che rappresenta le 6:00 del 12/29/1899 come successivo a uno che rappresenta le 7:00 dello stesso giorno.

La COleDateTime classe gestisce le date dal 1 gennaio 100 al 31 dicembre 9999. La COleDateTime classe usa il calendario gregoriano e non supporta le date julian. COleDateTime ignora l'ora legale. (Vedere Data e ora: supporto per l'automazione.

Nota

È possibile utilizzare il %y formato per recuperare un anno a due cifre solo per le date a partire dal 1900. Se si usa il formato in una data precedente al %y 1900, il codice genera un errore AS edizione Standard RT.

Questo tipo viene usato anche per rappresentare valori di sola data o di sola ora. Per convenzione, la data 0 (30 dicembre 1899) viene usata per i valori di sola ora e l'ora 00:00 (mezzanotte) viene usata per i valori di sola data.

Se si crea un COleDateTime oggetto usando una data minore di 100, la data viene accettata, ma le chiamate successive a GetYear, GetMonthGetMinuteGetDayGetHoure hanno esito negativo e GetSecond restituiscono -1. In precedenza, è possibile usare date a due cifre, ma le date devono essere 100 o superiori in MFC 4.2 e versioni successive.

Per evitare problemi, specificare una data a quattro cifre. Ad esempio:

COleDateTime mytime(1996, 1, 1, 0, 0, 0); 

Le operazioni aritmetiche di base per i COleDateTime valori usano la classe complementare COleDateTimeSpan. COleDateTimeSpan i valori definiscono un intervallo di tempo. La relazione tra queste classi è simile a quella tra CTime e CTimeSpan.

Per altre informazioni sulle COleDateTime classi e COleDateTimeSpan , vedere l'articolo Data e ora: Supporto automazione.

Requisiti

Intestazione: ATLComTime.h

Operatori relazionali COleDateTime

Operatori di confronto.

bool operator==(const COleDateTime& date) const throw();
bool operator!=(const COleDateTime& date) const throw();
bool operator<(const COleDateTime& date) const throw();
bool operator>(const COleDateTime& date) const throw();
bool operator<=(const COleDateTime& date) const throw();
bool operator>=(const COleDateTime& date) const throw();

Parametri

date
L'oggetto COleDateTime da confrontare.

Osservazioni:

Nota

Se uno dei due operandi non è valido, si verificherà ATLAS edizione Standard RT.

Esempi

COleDateTime dateOne(1995, 3, 15, 12, 0, 0); // 15 March 1995 12 noon
COleDateTime dateTwo(dateOne);             // 15 March 1995 12 noon
BOOL b;
b = dateOne == dateTwo;                    // TRUE
b = dateOne < dateTwo;                     // FALSE, same value
b = dateOne > dateTwo;                     // FALSE, same value
b = dateOne <= dateTwo;                    // TRUE, same value
b = dateOne >= dateTwo;                    // TRUE, same value   

dateTwo.SetStatus(COleDateTime::invalid);
b = dateOne == dateTwo;                    // FALSE, different status
b = dateOne != dateTwo;                    // TRUE, different status

Gli operatori >=, <=, >e <, asseriranno se l'oggetto COleDateTime è impostato su Null.

VARIANT v = {};
v.vt = VT_NULL;
COleDateTime t1(v);
COleDateTime t2(v);
t1 = t1 + t2;

COleDateTime::COleDateTime

Costruisce un oggetto COleDateTime.

COleDateTime() throw();
COleDateTime(const VARIANT& varSrc) throw();
COleDateTime(DATE dtSrc) throw();
COleDateTime(time_t timeSrc) throw();
COleDateTime(__time64_t timeSrc) throw();
COleDateTime(const SYSTEMTIME& systimeSrc) throw();
COleDateTime(const FILETIME& filetimeSrc) throw();

COleDateTime(int nYear,
    int nMonth,
    int nDay,
    int nHour,
    int nMin,
    int nSec) throw();

COleDateTime(WORD wDosDate,
    WORD wDosTime) throw();
COleDateTime(const DBTIMESTAMP& timeStamp) throw();

Parametri

dateSrc
Oggetto esistente COleDateTime da copiare nel nuovo COleDateTime oggetto.

varSrc
Struttura di dati esistente VARIANT (possibilmente un COleVariant oggetto) da convertire in un valore di data/ora (VT_DATE) e copiato nel nuovo COleDateTime oggetto.

dtSrc
Valore di data/ora (DATE) da copiare nel nuovo COleDateTime oggetto.

timeSrc
Valore time_t o __time64_t da convertire in un valore di data/ora e copiato nel nuovo COleDateTime oggetto.

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

filetimeSrc
Struttura FILETIME da convertire in un valore di data/ora e copiata nel nuovo COleDateTime oggetto. Un FILETIME usa l'ora UTC (Universal Coordinated Time), quindi se passi un'ora locale nella struttura, i risultati non saranno corretti. Per altre informazioni, vedere Tempi di file in Windows SDK.

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

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

Timestamp
Riferimento a una struttura DBTimeStamp contenente l'ora locale corrente.

Osservazioni:

Tutti questi costruttori creano nuovi COleDateTime oggetti inizializzati sul valore specificato. La tabella seguente illustra gli intervalli validi per ogni componente di data e ora:

Componente data/ora Intervallo valido
year 100 - 9999
mese 0 - 12
Giorno 0 - 31
ora 0 - 23
minuto 0 - 59
second 0 - 59

Si noti che il limite superiore effettivo per il componente giorno varia in base ai componenti mese e anno. Per informazioni dettagliate, vedere le SetDate funzioni membro o SetDateTime .

Di seguito è riportata una breve descrizione di ogni costruttore:

  • COleDateTime() Costruisce un COleDateTime oggetto inizializzato su 0 (mezzanotte, 30 dicembre 1899).

  • COleDateTime(dateSrc) Costruisce un COleDateTime oggetto da un oggetto esistente COleDateTime .

  • COleDateTime(varSrc) Costruisce un COleDateTime oggetto . Tenta di convertire una struttura o un VARIANT oggetto COleVariant in un valore di data/ora ( VT_DATE). Se la conversione ha esito positivo, il valore convertito viene copiato nel nuovo COleDateTime oggetto . In caso contrario, il valore dell'oggetto COleDateTime viene impostato su 0 (mezzanotte, 30 dicembre 1899) e il relativo stato non è valido.

  • COleDateTime(dtSrc) Costruisce un COleDateTime oggetto da un DATE valore.

  • COleDateTime(timeSrc) Costruisce un COleDateTime oggetto da un time_t valore.

  • COleDateTime(systimeSrc) Costruisce un COleDateTime oggetto da un SYSTEMTIME valore.

  • COleDateTime(filetimeSrc) Costruisce un COleDateTime oggetto da un FILETIME valore. . Un FILETIME usa l'ora UTC (Universal Coordinated Time), quindi se passi un'ora locale nella struttura, i risultati non saranno corretti. Per altre informazioni, vedere Tempi file in Windows SDK.

  • COleDateTime(nYear, nMonth, nHour, nMin)nSecCostruisce un COleDateTime oggetto dai valori numerici specificati. nDay

  • COleDateTime(wDosDate, wDosTime) Costruisce un COleDateTime oggetto dai valori di data e ora MS-DOS specificati.

Per altre informazioni sul time_t tipo di dati, vedere la funzione temporale nella guida di riferimento alla libreria di runtime.

Per altre informazioni, vedere le strutture SYSTEMTIME e FILETIME in Windows SDK.

Per altre informazioni sui limiti per COleDateTime i valori, vedere l'articolo Data e ora: Supporto automazione.

Nota

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

Esempio

time_t osBinaryTime;   // C run-time time (defined in <time.h>)
time(&osBinaryTime);   // Get the current time from the 
                     // operating system.

COleDateTime time1;   // initialized to 00:00am, 30 December 1899
                     // (and m_nStatus is valid!)

COleDateTime time2 = time1; // Copy constructor
COleDateTime time3(osBinaryTime);   // from time_t
COleDateTime time4(1999, 3, 19, 22, 15, 0); // 10:15PM March 19, 1999

SYSTEMTIME sysTime;   // Win32 time information
GetSystemTime(&sysTime);

COleDateTime time5(sysTime);    

COleDateTime::Format

Crea una rappresentazione formattata del valore di data/ora.

CString Format(DWORD dwFlags = 0,  LCID lcid = LANG_USER_DEFAULT) const;
CString Format(LPCTSTR lpszFormat) const;
CString Format(UINT nFormatID) const;

Parametri

dwFlags
Indica uno dei flag delle impostazioni locali seguenti:

  • LOCALE_NOUedizione Standard ROVERRIDE Usare le impostazioni locali predefinite del sistema anziché le impostazioni utente personalizzate.

  • VAR_TIMEVALUEONLY Ignorare la parte relativa alla data durante l'analisi.

  • VAR_DATEVALUEONLY Ignorare la parte relativa al tempo durante l'analisi.

lcid
Indica l'ID delle impostazioni locali da utilizzare per la conversione. Per altre informazioni sugli identificatori di lingua, vedere Identificatori di lingua.

lpszFormat
Stringa di formattazione simile alla printf stringa di formattazione. Ogni codice di formattazione, preceduto da un segno percentuale ( %) , viene sostituito dal componente corrispondente COleDateTime . Gli altri caratteri nella stringa di formattazione vengono copiati senza modifiche alla stringa restituita. Per altre informazioni, vedere la funzione di runtime strftime. Il valore e il significato dei codici di formattazione per Format sono:

  • %H Ore nel giorno corrente

  • %M Minuti nell'ora corrente

  • %S Secondi nel minuto corrente

  • %% Segno percentuale

nFormatID
ID risorsa per la stringa di controllo formato.

Valore restituito

Oggetto CString contenente il valore di data/ora formattato.

Osservazioni:

Se lo stato di questo COleDateTime oggetto è Null, il valore restituito è una stringa vuota. Se lo stato non è valido, la stringa restituita viene specificata dalla risorsa stringa ATL_IDS_DATETIME_INVALID.

Di seguito è riportata una breve descrizione delle tre forme per questa funzione:

Format( dwFlags, lcid)
Questo modulo formatta il valore usando le specifiche della lingua (ID delle impostazioni locali) per la data e l'ora. Utilizzando i parametri predefiniti, questo modulo stamperà la data e l'ora, a meno che la parte dell'ora non sia 0 (mezzanotte), nel qual caso stamperà solo la data o la parte della data è 0 (30 dicembre 1899), nel qual caso verrà stampata solo l'ora. Se il valore di data/ora è 0 (30 dicembre 1899, mezzanotte), questo modulo con i parametri predefiniti stamperà mezzanotte.

Format( lpszFormat)
Questo modulo formatta il valore usando la stringa di formato che contiene codici di formattazione speciali preceduti da un segno di percentuale (%), come in printf. La stringa di formattazione viene passata come parametro alla funzione. Per altre informazioni sui codici di formattazione, vedere strftime, wcsftime nella guida di riferimento alla libreria di runtime.

Format( nFormatID)
Questo modulo formatta il valore usando la stringa di formato che contiene codici di formattazione speciali preceduti da un segno di percentuale (%), come in printf. La stringa di formattazione è una risorsa. L'ID di questa risorsa stringa viene passato come parametro. Per altre informazioni sui codici di formattazione, vedere strftime, wcsftime nella guida di riferimento alla libreria di runtime.

Esempio

COleDateTime t(1999, 3, 19, 22, 15, 0);

CString str = t.Format(_T("%A, %B %d, %Y"));
ASSERT(str == _T("Friday, March 19, 1999"));   

COleDateTime::GetAsDBTIMESTAMP

Chiamare questo metodo per ottenere l'ora nell'oggetto COleDateTime come struttura di DBTIMESTAMP dati.

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

Parametri

Timestamp
Riferimento a una struttura DBTimeStamp .

Valore restituito

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

Osservazioni:

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

Esempio

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

COleDateTime::GetAsSystemTime

Chiamare questo metodo per ottenere l'ora nell'oggetto COleDateTime come struttura di SYSTEMTIME dati.

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

Parametri

sysTime
Riferimento a una struttura SYSTEMTIME per ricevere il valore di data/ora convertito dall'oggetto COleDateTime .

Valore restituito

Restituisce TRUE se ha esito positivo; FAL edizione Standard se la conversione non riesce o se l'oggetto COleDateTime è NULL o non valido.

Osservazioni:

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

Per altre informazioni sullo stato contenute in un COleDateTime oggetto , vedere GetStatus.

COleDateTime::GetAsUDATE

Chiamare questo metodo per ottenere l'ora nell'oggetto COleDateTime come struttura di UDATE dati.

bool GetAsUDATE(UDATE& uDate) const throw();

Parametri

uDate
Riferimento a una UDATE struttura per ricevere il valore di data/ora convertito dall'oggetto COleDateTime .

Valore restituito

Restituisce TRUE se ha esito positivo; FAL edizione Standard se la conversione non riesce o se l'oggetto COleDateTime è NULL o non valido.

Osservazioni:

Una UDATE struttura rappresenta una data "decompressa".

COleDateTime::GetCurrentTime

Chiamare questa funzione membro statica per restituire il valore di data/ora corrente.

static COleDateTime WINAPI GetCurrentTime() throw();

Esempio

// example for COleDateTime::GetCurrentTime
COleDateTime dateTest;
   // dateTest value = midnight 30 December 1899

dateTest = COleDateTime::GetCurrentTime();
   // dateTest value = current date and time

// a second example for COleDateTime::GetCurrentTime
// Since GetCurrentTime() is a static member, you can use it in
// a constructor:

COleDateTime t1 = COleDateTime::GetCurrentTime();
COleDateTime t2(COleDateTime::GetCurrentTime());

// Or in a normal assignment operator

COleDateTime t3;
t3 = COleDateTime::GetCurrentTime();

// or even in an expression

 if (COleDateTime::GetCurrentTime().GetDayOfWeek() == 6)
    _tprintf(_T("Thank Goodness it is Friday!\n\n"));   

COleDateTime::GetDay

Ottiene il giorno del mese rappresentato da questo valore di data/ora.

int GetDay() const throw();

Valore restituito

Giorno del mese rappresentato dal valore di questo COleDateTime oggetto o COleDateTime::error se non è stato possibile ottenere il giorno.

Osservazioni:

I valori restituiti validi sono compresi tra 1 e 31.

Per informazioni su altre funzioni membro che eseguono query sul valore di questo COleDateTime oggetto, vedere le funzioni membro seguenti:

Esempio

COleDateTime t(1999, 3, 19, 22, 15, 0);  // 10:15PM March 19, 1999
ASSERT(t.GetDay() == 19);
ASSERT(t.GetMonth() == 3);
ASSERT(t.GetYear() == 1999);   

COleDateTime::GetDayOfWeek

Ottiene il giorno della settimana rappresentato da questo valore di data/ora.

int GetDayOfWeek() const throw();

Valore restituito

Giorno della settimana rappresentato dal valore di questo COleDateTime oggetto o COleDateTime::error se non è stato possibile ottenere il giorno della settimana.

Osservazioni:

I valori restituiti validi sono compresi tra 1 e 7, dove 1=domenica, 2=lunedì e così via.

Per informazioni su altre funzioni membro che eseguono query sul valore di questo COleDateTime oggetto, vedere le funzioni membro seguenti:

Esempio

COleDateTime t(1999, 3, 19, 22, 15, 0); // 10:15PM March 19, 1999
ASSERT(t.GetDayOfWeek() == 6);          // it's a Friday   

COleDateTime::GetDayOfYear

Ottiene il giorno dell'anno rappresentato da questo valore di data/ora.

int GetDayOfYear() const throw();

Valore restituito

Giorno dell'anno rappresentato dal valore di questo COleDateTime oggetto o COleDateTime::error se non è stato possibile ottenere il giorno dell'anno.

Osservazioni:

I valori restituiti validi sono compresi tra 1 e 366, dove 1 gennaio = 1.

Per informazioni su altre funzioni membro che eseguono query sul valore di questo COleDateTime oggetto, vedere le funzioni membro seguenti:

Esempio

COleDateTime t(1999, 3, 19, 22, 15, 0); // 10:15PM March 19, 1999
ASSERT(t.GetDayOfYear() == 78);         // 78th day of that year   

COleDateTime::GetHour

Ottiene l'ora rappresentata da questo valore di data/ora.

int GetHour() const throw();

Valore restituito

Ora rappresentata dal valore di questo COleDateTime oggetto o COleDateTime::error se non è stato possibile ottenere l'ora.

Osservazioni:

Intervallo di valori restituiti validi compreso tra 0 e 23.

Per informazioni su altre funzioni membro che eseguono query sul valore di questo COleDateTime oggetto, vedere le funzioni membro seguenti:

Esempio

COleDateTime t(1999, 3, 19, 22, 15, 0);  // 10:15PM March 19, 1999
ASSERT(t.GetSecond() == 0);
ASSERT(t.GetMinute() == 15);
ASSERT(t.GetHour() == 22);   

COleDateTime::GetMinute

Ottiene il minuto rappresentato da questo valore di data/ora.

int GetMinute() const throw();

Valore restituito

Minuto rappresentato dal valore di questo COleDateTime oggetto o COleDateTime::error se non è stato possibile ottenere il minuto.

Osservazioni:

I valori restituiti validi sono compresi tra 0 e 59.

Per informazioni su altre funzioni membro che eseguono query sul valore di questo COleDateTime oggetto, vedere le funzioni membro seguenti:

Esempio

Vedere l'esempio per GetHour.

COleDateTime::GetMonth

Ottiene il mese rappresentato da questo valore di data/ora.

int GetMonth() const throw();

Valore restituito

Mese rappresentato dal valore di questo COleDateTime oggetto o COleDateTime::error se non è stato possibile ottenere il mese.

Osservazioni:

I valori restituiti validi sono compresi tra 1 e 12.

Per informazioni su altre funzioni membro che eseguono query sul valore di questo COleDateTime oggetto, vedere le funzioni membro seguenti:

Esempio

Vedere l'esempio per GetDay.

COleDateTime::GetSecond

Ottiene il secondo rappresentato da questo valore di data/ora.

int GetSecond() const throw();

Valore restituito

Secondo rappresentato dal valore di questo COleDateTime oggetto o COleDateTime::error se non è stato possibile ottenere il secondo.

Osservazioni:

I valori restituiti validi sono compresi tra 0 e 59.

Nota

La COleDateTime classe non supporta i secondi intercalari.

Per altre informazioni sull'implementazione per COleDateTime, vedere l'articolo Data e ora: Supporto per l'automazione.

Per informazioni su altre funzioni membro che eseguono query sul valore di questo COleDateTime oggetto, vedere le funzioni membro seguenti:

Esempio

Vedere l'esempio per GetHour.

COleDateTime::GetStatus

Ottiene lo stato (validità) di un determinato COleDateTime oggetto.

DateTimeStatus GetStatus() const throw();

Valore restituito

Restituisce lo stato di questo COleDateTime valore. Se si chiama GetStatus su un COleDateTime oggetto costruito con l'impostazione predefinita, verrà restituito un valore valido. Se si chiama GetStatus su un COleDateTime oggetto inizializzato con il costruttore impostato su Null, GetStatus restituirà Null.

Osservazioni:

Il valore restituito è definito dal DateTimeStatus tipo enumerato, definito all'interno della COleDateTime classe .

enum DateTimeStatus
{
   error = -1,
   valid = 0,
   invalid = 1,    // Invalid date (out of range, etc.)
   null = 2,       // Literally has no value
};

Per una breve descrizione di questi valori di stato, vedere l'elenco seguente:

  • COleDateTime::error Indica che si è verificato un errore durante il tentativo di ottenere parte del valore di data/ora.

  • COleDateTime::valid Indica che questo COleDateTime oggetto è valido.

  • COleDateTime::invalid Indica che l'oggetto COleDateTime non è valido, ovvero il relativo valore potrebbe non essere corretto.

  • COleDateTime::null Indica che questo COleDateTime oggetto è Null, ovvero che non è stato fornito alcun valore per questo oggetto. Si tratta di "null" nel senso del database di "non avere alcun valore", invece di C++ NULL.

Lo stato di un COleDateTime oggetto non è valido nei casi seguenti:

  • Se il valore è impostato da un VARIANT valore o COleVariant che non è stato possibile convertire in un valore di data/ora.

  • Se il valore è impostato da un time_tvalore , SYSTEMTIMEo FILETIME che non è stato possibile convertire in un valore di data/ora valido.

  • Se il valore è impostato da SetDateTime con valori di parametro non validi.

  • Se questo oggetto ha riscontrato un overflow o un underflow durante un'operazione di assegnazione aritmetica, ovvero += o -=.

  • Se a questo oggetto è stato assegnato un valore non valido.

  • Se lo stato di questo oggetto è stato impostato in modo esplicito su non valido tramite SetStatus.

Per altre informazioni sulle operazioni che possono impostare lo stato su non valido, vedere le funzioni membro seguenti:

Per altre informazioni sui limiti per COleDateTime i valori, vedere l'articolo Data e ora: Supporto automazione.

Esempio

COleDateTime t;

// this one is a leap year
t.SetDateTime(2000, 2, 29, 5, 0, 0);
ASSERT(t.GetStatus() == COleDateTime::valid);

// this date isn't valid
t.SetDateTime(1925, 2, 30, 5, 0, 0);
ASSERT(t.GetStatus() == COleDateTime::invalid);

// the only way to set null is to set null!
t.SetStatus(COleDateTime::null);
ASSERT(t.GetStatus() == COleDateTime::null);   

COleDateTime::GetYear

Ottiene l'anno rappresentato da questo valore di data/ora.

int GetYear() const throw();

Valore restituito

Anno rappresentato dal valore di questo COleDateTime oggetto o COleDateTime::error se non è stato possibile ottenere l'anno.

Osservazioni:

I valori restituiti validi sono compresi tra 100 e 9999, che includono il secolo.

Per informazioni su altre funzioni membro che eseguono query sul valore di questo COleDateTime oggetto, vedere le funzioni membro seguenti:

Per altre informazioni sui limiti per COleDateTime i valori, vedere l'articolo Data e ora: Supporto automazione.

Esempio

Vedere l'esempio per GetDay.

COleDateTime::m_dt

Struttura sottostante DATE per questo COleDateTime oggetto.

DATE m_dt;

Osservazioni:

Attenzione

La modifica del valore nell'oggetto DATE a cui si accede dal puntatore restituito da questa funzione modificherà il valore di questo COleDateTime oggetto. Non modifica lo stato di questo COleDateTime oggetto.

Per altre informazioni sull'implementazione dell'oggetto, vedere l'articolo DATEData e ora: Supporto automazione.

COleDateTime::m_status

Contiene lo stato di questo COleDateTime oggetto.

DateTimeStatus m_status;

Osservazioni:

Il tipo di questo membro dati è il tipo DateTimeStatusenumerato , definito all'interno della COleDateTime classe . Per altre informazioni, vedere COleDateTime::GetStatus.

Attenzione

Questo membro dati è destinato a situazioni di programmazione avanzate. È consigliabile usare le funzioni membro inline GetStatus e SetStatus. Vedere SetStatus per ulteriori precauzioni relative all'impostazione esplicita di questo membro dati.

COleDateTime::operator =

Copia un COleDateTime valore.

COleDateTime& operator=(const VARIANT& varSrc) throw();
COleDateTime& operator=(DATE dtSrc) throw();
COleDateTime& operator=(const time_t& timeSrc) throw();
COleDateTime& operator=(const __time64_t& timeSrc) throw();
COleDateTime& operator=(const SYSTEMTIME& systimeSrc) throw();
COleDateTime& operator=(const FILETIME& filetimeSrc) throw();
COleDateTime& operator=(const UDATE& uDate) throw();

Osservazioni:

Questi operatori di assegnazione di overload copiano il valore di data/ora di origine in questo COleDateTime oggetto. Di seguito è riportata una breve descrizione di ognuno di questi operatori di assegnazione di overload:

  • operator =(dateSrc) Il valore e lo stato dell'operando vengono copiati in questo COleDateTime oggetto.

  • operator =(varSrc) Se la conversione del valore VARIANT (o dell'oggetto COleVariant) in una data/ora (VT_DATE) ha esito positivo, il valore convertito viene copiato in questo COleDateTime oggetto e il relativo stato è impostato su valido. Se la conversione non riesce, il valore di questo oggetto viene impostato su zero (30 dicembre 1899, mezzanotte) e il relativo stato non è valido.

  • operator =(dtSrc) Il DATE valore viene copiato in questo COleDateTime oggetto e il relativo stato è impostato su valido.

  • operator =(timeSrc) Il time_t valore o __time64_t viene convertito e copiato in questo COleDateTime oggetto. Se la conversione ha esito positivo, lo stato di questo oggetto è impostato su valido; se ha esito negativo, è impostato su non valido.

  • operator =(systimeSrc) Il valore SYSTEMTIME viene convertito e copiato in questo COleDateTime oggetto. Se la conversione ha esito positivo, lo stato di questo oggetto è impostato su valido; se ha esito negativo, è impostato su non valido.

  • operator =(uDate) Il UDATE valore viene convertito e copiato in questo COleDateTime oggetto. Se la conversione ha esito positivo, lo stato di questo oggetto è impostato su valido; se ha esito negativo, è impostato su non valido. Una UDATE struttura rappresenta una data "decompressa". Per altre informazioni, vedere la funzione VarDateFromUdate.

  • operator =(filetimeSrc) Il valore FILETIME viene convertito e copiato in questo COleDateTime oggetto. Se la conversione ha esito positivo, lo stato di questo oggetto è impostato su valido; in caso contrario, è impostato su non valido. FILETIME usa l'ora UTC (Universal Coordinated Time), quindi se passi un'ora UTC nella struttura, i risultati verranno convertiti dall'ora UTC all'ora locale e verranno archiviati come ora variante. Questo comportamento è identico a quello di Visual C++ 6.0 e Visual C++.NET 2003 SP2. Per altre informazioni, vedere Tempi file in Windows SDK.

Per altre informazioni, vedere la voce VARIANT in Windows SDK.

Per altre informazioni sul time_t tipo di dati, vedere la funzione temporale nella guida di riferimento alla libreria di runtime.

Per altre informazioni, vedere le strutture SYSTEMTIME e FILETIME in Windows SDK.

Per altre informazioni sui limiti per COleDateTime i valori, vedere l'articolo Data e ora: Supporto automazione.

COleDateTime::operator +, -

Aggiungere e sottrarre ColeDateTime valori.

COleDateTime operator+(COleDateTimeSpan dateSpan) const throw();
COleDateTime operator-(COleDateTimeSpan dateSpan) const throw();
COleDateTimeSpan operator-(const COleDateTime& date) const throw();

Osservazioni:

COleDateTime gli oggetti rappresentano i tempi assoluti. Gli oggetti COleDateTimeSpan rappresentano tempi relativi. I primi due operatori consentono di aggiungere e sottrarre un COleDateTimeSpan valore da un COleDateTime valore. Il terzo operatore consente di sottrarre un COleDateTime valore da un altro per restituire un COleDateTimeSpan valore.

Se uno degli operandi è Null, lo stato del valore risultante COleDateTime è Null.

Se il valore risultante COleDateTime non rientra nei limiti di valori accettabili, lo stato di tale COleDateTime valore non è valido.

Se uno degli operandi non è valido e l'altro non è Null, lo stato del valore risultante COleDateTime non è valido.

Gli + operatori e - asseriranno se l'oggetto COleDateTime è impostato su Null. Per un esempio, vedere Operatori relazionali COleDateTime.

Per altre informazioni sui valori di stato validi, non validi e Null, vedere la variabile membro m_status .

Per altre informazioni sui limiti per COleDateTime i valori, vedere l'articolo Data e ora: Supporto automazione.

Esempio

COleDateTime t1(1999, 3, 19, 22, 15, 0); // 10:15PM March 19, 1999
COleDateTime t2(1999, 3, 20, 22, 15, 0); // 10:15PM March 20, 1999

// Subtract 2 COleDateTimes
COleDateTimeSpan ts = t2 - t1;

// one day is 24 * 60 * 60 == 86400 seconds
ASSERT(ts.GetTotalSeconds() == 86400L);

// Add a COleDateTimeSpan to a COleDateTime.
ASSERT((t1 + ts) == t2);

// Subtract a COleDateTimeSpan from a COleDateTime.
ASSERT((t2 - ts) == t1);   

COleDateTime::operator +=, -=

Aggiungere e sottrarre un ColeDateTime valore da questo COleDateTime oggetto.

COleDateTime& operator+=(COleDateTimeSpan dateSpan) throw();
COleDateTime& operator-=(COleDateTimeSpan dateSpan) throw();

Osservazioni:

Questi operatori consentono di aggiungere e sottrarre un COleDateTimeSpan valore a e da questo COleDateTime. Se uno degli operandi è Null, lo stato del valore risultante COleDateTime è Null.

Se il valore risultante COleDateTime non rientra nei limiti di valori accettabili, lo stato di questo COleDateTime valore viene impostato su non valido.

Se uno degli operandi non è valido e altro non è Null, lo stato del valore risultante COleDateTime non è valido.

Per altre informazioni sui valori di stato validi, non validi e Null, vedere la variabile membro m_status .

Gli += operatori e -= asseriranno se l'oggetto COleDateTime è impostato su Null. Per un esempio, vedere Operatori relazionali COleDateTime.

Per altre informazioni sui limiti per COleDateTime i valori, vedere l'articolo Data e ora: Supporto automazione.

COleDateTime::operator DATE

Converte un ColeDateTime valore in un oggetto DATE.

operator DATE() const throw();

Osservazioni:

Questo operatore restituisce un DATE oggetto il cui valore viene copiato da questo COleDateTime oggetto. Per altre informazioni sull'implementazione dell'oggetto, vedere l'articolo DATEData e ora: Supporto automazione.

L'operatore DATE asserisce se l'oggetto COleDateTime è impostato su Null. Per un esempio, vedere Operatori relazionali COleDateTime.

COleDateTime::P arseDateTime

Analizza una stringa per leggere un valore di data/ora.

bool ParseDateTime(
    LPCTSTR lpszDate,
    DWORD dwFlags = 0,
    LCID lcid = LANG_USER_DEFAULT) throw();

Parametri

lpszDate
Puntatore alla stringa con terminazione Null che deve essere analizzata. Per informazioni dettagliate, vedere la sezione Osservazioni.

dwFlags
Indica i flag per le impostazioni locali e l'analisi. Uno o più dei flag seguenti:

  • LOCALE_NOUedizione Standard ROVERRIDE Usare le impostazioni locali predefinite del sistema anziché le impostazioni utente personalizzate.

  • VAR_TIMEVALUEONLY Ignorare la parte relativa alla data durante l'analisi.

  • VAR_DATEVALUEONLY Ignorare la parte relativa al tempo durante l'analisi.

lcid
Indica l'ID delle impostazioni locali da utilizzare per la conversione.

Valore restituito

Restituisce TRUE se la stringa è stata convertita correttamente in un valore di data/ora; in caso contrario, FAL edizione Standard.

Osservazioni:

Se la stringa è stata convertita correttamente in un valore di data/ora, il valore di questo COleDateTime oggetto viene impostato su tale valore e il relativo stato su valido.

Nota

I valori di anno devono essere compresi tra 100 e 9999.

Il parametro lpszDate può accettare diversi formati. Ad esempio, le stringhe seguenti contengono formati di data/ora accettabili:

"25 January 1996"

"8:30:00"

"20:30:00"

"January 25, 1996 8:30:00"

"8:30:00 Jan. 25, 1996"

"1/25/1996 8:30:00" // always specify the full year, even in a 'short date' format

L'ID delle impostazioni locali influirà anche sul fatto che il formato stringa sia accettabile per la conversione in un valore di data/ora.

Nel caso di VAR_DATEVALUEONLY, il valore dell'ora viene impostato su ora 0 o mezzanotte. Nel caso di VAR_TIMEVALUEONLY, il valore di data viene impostato sulla data 0, ovvero 30 dicembre 1899.

Se non è stato possibile convertire la stringa in un valore di data/ora o se si è verificato un overflow numerico, lo stato di questo COleDateTime oggetto non è valido.

Per altre informazioni sui limiti e sull'implementazione per COleDateTime i valori, vedere l'articolo Data e ora: Supporto automazione.

COleDateTime::SetDate

Imposta la data dell'oggetto COleDateTime .

int SetDate(
    int nYear,
    int nMonth,
    int nDay) throw();

Parametri

nYear
Indica l'anno da copiare in questo COleDateTime oggetto.

nMonth
Indica il mese da copiare in questo COleDateTime oggetto.

nDay
Indica il giorno da copiare in questo COleDateTime oggetto.

Valore restituito

Zero se il valore di questo COleDateTime oggetto è stato impostato correttamente; in caso contrario, 1. Questo valore restituito si basa sul DateTimeStatus tipo enumerato. Per altre informazioni, vedere la funzione membro SetStatus .

Osservazioni:

La data viene impostata sui valori specificati. L'ora è impostata su ora 0, mezzanotte.

Per i valori dei parametri, vedere la tabella seguente:

Parametro Bounds
nYear 100 - 9999
nMonth 1 - 12
nDay 0 - 31

Se il giorno del mese supera gli overflow, viene convertito nel giorno corretto del mese successivo e il mese e/o l'anno viene incrementato di conseguenza. Il valore del giorno zero indica l'ultimo giorno del mese precedente. Il comportamento è uguale SystemTimeToVariantTimea .

Se il valore di data specificato dai parametri non è valido, lo stato di questo oggetto viene impostato su COleDateTime::invalid. È consigliabile usare GetStatus per verificare la validità del DATE valore e non presupporre che il valore di m_dt rimarrà invariato.

Ecco alcuni esempi di valori di data:

nYear nMonth nDay Valore
2000 2 29 29 febbraio 2000
1776 7 4 4 luglio 1776
1925 4 35 35 aprile 1925 (data non valida)
10000 1 1 1 gennaio 10000 (data non valida)

Per impostare data e ora, vedere COleDateTime::SetDateTime.

Per informazioni sulle funzioni membro che eseguono query sul valore di questo COleDateTime oggetto, vedere le funzioni membro seguenti:

Per altre informazioni sui limiti per COleDateTime i valori, vedere l'articolo Data e ora: Supporto automazione.

Esempio

// set only the date, time set to midnight
dt.SetDate(1999, 3, 19);
ASSERT(dt.GetYear() == 1999);
ASSERT(dt.GetDay() == 19);
ASSERT(dt.GetMonth() == 3);
ASSERT(dt.GetHour() == 0);
ASSERT(dt.GetMinute() == 0);
ASSERT(dt.GetSecond() == 0);

// setting the time only resets the date to 1899!
dt.SetTime(22, 15, 0);
ASSERT(dt.GetYear() == 1899);
ASSERT(dt.GetDay() == 30);
ASSERT(dt.GetMonth() == 12);
ASSERT(dt.GetHour() == 22);
ASSERT(dt.GetMinute() == 15);
ASSERT(dt.GetSecond() == 0);   

COleDateTime::SetDateTime

Imposta la data e l'ora dell'oggetto COleDateTime .

int SetDateTime(
    int nYear,
    int nMonth,
    int nDay,
    int nHour,
    int nMin,
    int nSec) throw();

Parametri

nYear, nMonth, nDay, nHour, nMin, nSec
Indicare i componenti di data e ora da copiare in questo COleDateTime oggetto.

Valore restituito

Zero se il valore di questo COleDateTime oggetto è stato impostato correttamente; in caso contrario, 1. Questo valore restituito si basa sul DateTimeStatus tipo enumerato. Per altre informazioni, vedere la funzione membro SetStatus .

Osservazioni:

Per i valori dei parametri, vedere la tabella seguente:

Parametro Bounds
nYear 100 - 9999
nMonth 1 - 12
nDay 0 - 31
nHour 0 - 23
nMin 0 - 59
nSec 0 - 59

Se il giorno del mese supera gli overflow, viene convertito nel giorno corretto del mese successivo e il mese e/o l'anno viene incrementato di conseguenza. Il valore del giorno zero indica l'ultimo giorno del mese precedente. Il comportamento è identico a SystemTimeToVariantTime.

Se il valore di data o ora specificato dai parametri non è valido, lo stato di questo oggetto è impostato su non valido e il valore di questo oggetto non viene modificato.

Ecco alcuni esempi di valori temporali:

nHour nMin nSec Valore
1 3 3 01:03:03
23 45 0 23:45:00
25 30 0 Non valido
9 60 0 Non valido

Ecco alcuni esempi di valori di data:

nYear nMonth nDay Valore
1995 4 15 15 aprile 1995
1789 7 14 17 luglio 1789
1925 2 30 Non valido
10000 1 1 Non valido

Per impostare solo la data, vedere COleDateTime::SetDate. Per impostare solo l'ora, vedere COleDateTime::SetTime.

Per informazioni sulle funzioni membro che eseguono query sul valore di questo COleDateTime oggetto, vedere le funzioni membro seguenti:

Per altre informazioni sui limiti per COleDateTime i valori, vedere l'articolo Data e ora: Supporto automazione.

Esempio

Vedere l'esempio per GetStatus.

COleDateTime::SetStatus

Imposta lo stato di questo COleDateTime oggetto.

void SetStatus(DateTimeStatus status) throw();

Parametri

status
Nuovo valore di stato per questo COleDateTime oggetto.

Osservazioni:

Il valore del DateTimeStatus parametro di stato è definito dal tipo enumerato, definito all'interno della COleDateTime classe . Per informazioni dettagliate, vedere COleDateTime::GetStatus .

Attenzione

Questa funzione è per situazioni di programmazione avanzate. Questa funzione non modifica i dati in questo oggetto. Viene spesso usato per impostare lo stato su Null o non valido. L'operatore di assegnazione (operatore =) e SetDateTime impostano lo stato dell'oggetto in base ai valori di origine.

Esempio

Vedere l'esempio per GetStatus.

COleDateTime::SetTime

Imposta l'ora di questo COleDateTime oggetto.

int SetTime(
    int nHour,
    int nMin,
    int nSec) throw();

Parametri

nHour, nMin, nSec
Indicare il tempo di copia dei componenti in questo COleDateTime oggetto.

Valore restituito

Zero se il valore di questo COleDateTime oggetto è stato impostato correttamente; in caso contrario, 1. Questo valore restituito si basa sul DateTimeStatus tipo enumerato. Per altre informazioni, vedere la funzione membro SetStatus .

Osservazioni:

L'ora viene impostata sui valori specificati. La data è impostata sulla data 0, ovvero il 30 dicembre 1899.

Per i valori dei parametri, vedere la tabella seguente:

Parametro Bounds
nHour 0 - 23
nMin 0 - 59
nSec 0 - 59

Se il valore di ora specificato dai parametri non è valido, lo stato di questo oggetto è impostato su non valido e il valore di questo oggetto non viene modificato.

Ecco alcuni esempi di valori temporali:

nHour nMin nSec Valore
1 3 3 01:03:03
23 45 0 23:45:00
25 30 0 Non valido
9 60 0 Non valido

Per impostare data e ora, vedere COleDateTime::SetDateTime.

Per informazioni sulle funzioni membro che eseguono query sul valore di questo COleDateTime oggetto, vedere le funzioni membro seguenti:

Per altre informazioni sui limiti per COleDateTime i valori, vedere l'articolo Data e ora: Supporto automazione.

Esempio

Vedere l'esempio per SetDate.

Vedi anche

Classe COleVariant
Classe CTime
Classe CTimeSpan
Grafico della gerarchia
Classi condivise ATL/MFC