Partilhar via


COleDateTime Classe

Encapsula o DATE tipo de dados usado na automação OLE.

Sintaxe

class COleDateTime

Membros

Construtores Públicos

Nome Descrição
COleDateTime::COleDateTime Constrói um objeto COleDateTime.

Métodos Públicos

Nome Descrição
COleDateTime::Formato Gera uma representação formatada de cadeia de caracteres de um COleDateTime objeto.
COleDateTime::GetAsDBTIMESTAMP Chame esse método para obter o COleDateTime tempo no objeto como uma estrutura de DBTIMESTAMP dados.
COleDateTime::GetAsSystemTime Chame esse método para obter o COleDateTime tempo no objeto como uma estrutura de dados SYSTEMTIME .
COleDateTime::GetAsUDATE Chame esse método para obter o COleDateTime tempo na como uma estrutura de UDATE dados.
COleDateTime::GetCurrentTime Cria um COleDateTime objeto que representa a hora atual (função de membro estático).
COleDateTime::GetDay Devolve o dia em que este COleDateTime objeto representa (1 - 31).
COleDateTime::GetDayOfWeek Devolve o dia da semana que este COleDateTime objeto representa (domingo = 1).
COleDateTime::GetDayOfYear Devolve o dia do ano que este COleDateTime objeto representa (1 de janeiro = 1).
COleDateTime::GetHour Devolve a hora que este COleDateTime objeto representa (0 - 23).
COleDateTime::GetMinute Devolve o minuto que este COleDateTime objeto representa (0 - 59).
COleDateTime::GetMonth Devolve o mês que este COleDateTime objeto representa (1 - 12).
COleDateTime::GetSecond Retorna o segundo que este COleDateTime objeto representa (0 - 59).
COleDateTime::GetStatus Obtém o status (validade) deste COleDateTime objeto.
COleDateTime::GetYear Devolve o ano que este COleDateTime objeto representa.
COleDateTime::P arseDateTime Lê um valor de data/hora de uma cadeia de caracteres e define o valor de COleDateTime.
COleDateTime::SetDate Define o valor deste COleDateTime objeto como o valor somente data especificado.
COleDateTime::SetDateTime Define o valor deste COleDateTime objeto como o valor de data/hora especificado.
COleDateTime::SetStatus Define o status (validade) deste COleDateTime objeto.
COleDateTime::SetTime Define o valor desse COleDateTime objeto como o valor somente tempo especificado.

Operadores Públicos

Nome Descrição
COleDateTime::operador ==, COleDateTime::operador <, etc. Compare dois COleDateTime valores.
COleDateTime::operador +, COleDateTime::operador - Adicionar e subtrair COleDateTime valores.
COleDateTime::operador +=, COleDateTime::operador -= Adicione e subtraia um COleDateTime valor deste COleDateTime objeto.
COleDateTime::operador = Copia um COleDateTime valor.
COleDateTime::DATE do operador, COleDateTime::data do operador* Converte um COleDateTime valor em um DATE ou um DATE*arquivo .

Membros de Dados Públicos

Nome Descrição
COleDateTime::m_dt Contém o subjacente DATE para este COleDateTime objeto.
COleDateTime::m_status Contém o status deste COleDateTime objeto.

Observações

COleDateTime não tem uma classe base.

É um dos tipos possíveis para o tipo de dados VARIANT de automação OLE. Um COleDateTime valor representa um valor absoluto de data e hora.

O DATE tipo é implementado como um valor de ponto flutuante. Os dias são medidos a partir de 30 de dezembro de 1899, à meia-noite. A tabela a seguir mostra algumas datas e seus valores associados:

Data Valor
29 de dezembro de 1899, meia-noite -1.0
29 de dezembro de 1899, 6 A.M -1.25
30 de dezembro de 1899, meia-noite 0.0
31 de dezembro de 1899, meia-noite 1.0
1 de janeiro de 1900, 6 A.M. 2,25

Atenção

Na tabela acima, embora os valores do dia se tornem negativos antes da meia-noite de 30 de dezembro de 1899, os valores da hora do dia não. Por exemplo, 6:00 AM é sempre representado por um valor fracionário 0,25, independentemente de o número inteiro que representa o dia ser positivo (após 30 de dezembro de 1899) ou negativo (antes de 30 de dezembro de 1899). Isso significa que uma simples comparação de ponto flutuante classificaria erroneamente um COleDateTime representando 6:00 AM em 29/12/1899 como posterior a um representando 7:00 AM no mesmo dia.

A COleDateTime aula data de 1º de janeiro de 100 a 31 de dezembro de 9999. A COleDateTime classe usa o calendário gregoriano, não suporta datas julianas. COleDateTime ignora o horário de verão. (Consulte Data e hora: Suporte de automação.)

Observação

Você pode usar o %y formato para recuperar um ano de dois dígitos apenas para datas a partir de 1900. Se você usar o %y formato em uma data anterior a 1900, o código gerará uma falha ASSERT.

Esse tipo também é usado para representar valores somente data ou hora. Por convenção, a data 0 (30 de dezembro de 1899) é usada para valores somente de tempo e a hora 00:00 (meia-noite) é usada para valores somente de data.

Se você criar um COleDateTime objeto usando uma data inferior a 100, a data será aceita, mas as chamadas subsequentes para GetYear, GetMonth, GetDay, GetHour, , GetMinutee GetSecond falhar e retornar -1. Anteriormente, você podia usar datas de dois dígitos, mas as datas devem ser 100 ou maiores no MFC 4.2 e posterior.

Para evitar problemas, especifique uma data de quatro dígitos. Por exemplo:

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

As operações aritméticas básicas para os COleDateTime valores usam a classe complementar COleDateTimeSpan. COleDateTimeSpan Os valores definem um intervalo de tempo. A relação entre estas classes é semelhante à relação entre CTime e CTimeSpan.

Para obter mais informações sobre as COleDateTime classes e COleDateTimeSpan , consulte o artigo Data e hora: suporte à automação.

Requerimentos

Cabeçalho: ATLComTime.h

Operadores relacionais COleDateTime

Operadores de comparação.

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();

Parâmetros

data
O COleDateTime objeto a ser comparado.

Observações

Observação

Um ATLASSERT ocorrerá se um dos dois operandos for inválido.

Exemplos

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

Os operadores >=, <=, >, e <, afirmarão se o COleDateTime objeto estiver definido como null.

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

COleDateTime::COleDateTime

Constrói um objeto 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();

Parâmetros

dataSrc
Um objeto existente COleDateTime a ser copiado para o novo COleDateTime objeto.

varSrc
Uma estrutura de dados existente VARIANT (possivelmente um COleVariant objeto) a ser convertida em um valor de data/hora (VT_DATE) e copiada para o novo COleDateTime objeto.

dtSrc
Um valor de data/hora (DATE) a ser copiado para o novo COleDateTime objeto.

timeSrc
Um time_t ou __time64_t valor a ser convertido em um valor de data/hora e copiado para o novo COleDateTime objeto.

systimeSrc
Uma SYSTEMTIME estrutura a ser convertida em um valor de data/hora e copiada para o novo COleDateTime objeto.

filetimeSrc
Uma FILETIME estrutura a ser convertida em um valor de data/hora e copiada para o novo COleDateTime objeto. A FILETIME usa o Tempo Universal Coordenado (UTC), portanto, se você passar uma hora local na estrutura, seus resultados estarão incorretos. Consulte Tempos de arquivo no SDK do Windows para obter mais informações.

nAno, nMês, nDia, nHora, nMin, nSec
Indique os valores de data e hora a serem copiados para o novo COleDateTime objeto.

wDosDate, wDosTime
MS-DOS valores de data e hora a serem convertidos em um valor de data/hora e copiados para o novo COleDateTime objeto.

Carimbo de data/hora
Uma referência a uma estrutura DBTimeStamp que contém a hora local atual.

Observações

Todos esses construtores criam novos COleDateTime objetos inicializados com o valor especificado. A tabela a seguir mostra intervalos válidos para cada componente de data e hora:

Componente data/hora Intervalo válido
ano 100 - 9999
mês 0 - 12
Dia 0 - 31
hora 0 - 23
minuto 0 - 59
segundo 0 - 59

Observe que o limite superior real para o componente dia varia com base nos componentes mês e ano. Para obter detalhes, consulte as SetDate funções ou SetDateTime membro.

Segue-se uma breve descrição de cada construtor:

  • COleDateTime( ) Constrói um COleDateTime objeto inicializado para 0 (meia-noite, 30 de dezembro de 1899).

  • COleDateTime( dateSrc ) Constrói um COleDateTime objeto a partir de um objeto existente COleDateTime .

  • COleDateTime( varSrc) Constrói um COleDateTime objeto. Tenta converter uma VARIANT estrutura ou objeto COleVariant em um valor de data/hora (VT_DATE). Se essa conversão for bem-sucedida, o valor convertido será copiado para o novo COleDateTime objeto. Se não estiver, o COleDateTime valor do objeto é definido como 0 (meia-noite, 30 de dezembro de 1899) e seu status como inválido.

  • COleDateTime( dtSrc ) Constrói um COleDateTime objeto a partir de um DATE valor.

  • COleDateTime( timeSrc ) Constrói um COleDateTime objeto a partir de um time_t valor.

  • COleDateTime( systimeSrc) Constrói um COleDateTime objeto a partir de um SYSTEMTIME valor.

  • COleDateTime( filetimeSrc ) Constrói um COleDateTime objeto a partir de um FILETIME valor. . A FILETIME usa o Tempo Universal Coordenado (UTC), portanto, se você passar uma hora local na estrutura, seus resultados estarão incorretos. Para obter mais informações, consulte Tempos de arquivo no SDK do Windows.

  • COleDateTime( nYear, nMonth, nDay, nHour, nMin, nSec Constrói um COleDateTime objeto a partir dos valores numéricos especificados.

  • COleDateTime( wDosDate, wDosTime) Constrói um COleDateTime objeto a partir dos valores de data e hora de MS-DOS especificados.

Para obter mais informações sobre o tipo de time_t dados, consulte a função de tempo na Referência da Biblioteca deRun-Time.

Para obter mais informações, consulte as estruturas SYSTEMTIME e FILETIME no SDK do Windows.

Para obter mais informações sobre os limites para COleDateTime valores, consulte o artigo Data e hora: suporte à automação.

Observação

O construtor usando DBTIMESTAMP parâmetro só está disponível quando OLEDB.h está incluído.

Exemplo

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::Formato

Cria uma representação formatada do valor de data/hora.

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

Parâmetros

dwBandeiras
Indica um dos seguintes sinalizadores de localidade:

  • LOCALE_NOUSEROVERRIDE Use as configurações de localidade padrão do sistema, em vez das configurações personalizadas do usuário.

  • VAR_TIMEVALUEONLY Ignore a parte da data durante a análise.

  • VAR_DATEVALUEONLY Ignore a parte de tempo durante a análise.

LCID
Indica o ID de localidade a ser usado para a conversão. Para obter mais informações sobre identificadores de idioma, consulte Identificadores de idioma.

lpszFormat
Uma cadeia de formatação semelhante à cadeia de printf formatação. Cada código de formatação, precedido por um sinal de porcentagem (%), é substituído pelo componente correspondente COleDateTime . Outros caracteres na cadeia de formatação são copiados inalterados para a cadeia de caracteres retornada. Para obter mais informações, consulte a função de tempo de execução strftime. O valor e o significado dos códigos de formatação são Format :

  • %H Horas no dia atual

  • %M Minutos na hora atual

  • %S Segundos no minuto atual

  • %% Sinal de percentagem

nFormatID
A ID do recurso para a cadeia de caracteres de controle de formato.

Valor de retorno

A CString que contém o valor de data/hora formatado.

Observações

Se o status desse COleDateTime objeto for null, o valor de retorno será uma cadeia de caracteres vazia. Se o status for inválido, a cadeia de caracteres de retorno será especificada pelo recurso de cadeia de caracteres ATL_IDS_DATETIME_INVALID.

Segue-se uma breve descrição dos três formulários para esta função:

Format( dwFlags, lcid)
Este formulário formata o valor usando as especificações de idioma (IDs de localidade) para data e hora. Usando os parâmetros padrão, este formulário imprimirá a data e a hora, a menos que a parte de hora seja 0 (meia-noite), caso em que imprimirá apenas a data, ou a parte de data é 0 (30 de dezembro de 1899), caso em que imprimirá apenas a hora. Se o valor de data/hora for 0 (30 de dezembro de 1899, meia-noite), este formulário com os parâmetros padrão imprimirá meia-noite.

Format( lpszFormat)
Este formulário formata o valor usando a cadeia de caracteres de formato que contém códigos de formatação especiais que são precedidos por um sinal de porcentagem (%), como em printf. A cadeia de caracteres de formatação é passada como um parâmetro para a função. Para obter mais informações sobre os códigos de formatação, consulte strftime, wcsftime na Run-Time Library Reference.

Format( nFormatID)
Este formulário formata o valor usando a cadeia de caracteres de formato que contém códigos de formatação especiais que são precedidos por um sinal de porcentagem (%), como em printf. A cadeia de caracteres de formatação é um recurso. A ID desse recurso de cadeia de caracteres é passada como o parâmetro. Para obter mais informações sobre os códigos de formatação, consulte strftime, wcsftime na Run-Time Library Reference.

Exemplo

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

Chame esse método para obter o COleDateTime tempo no objeto como uma estrutura de DBTIMESTAMP dados.

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

Parâmetros

Carimbo de data/hora
Uma referência a uma estrutura DBTimeStamp .

Valor de retorno

Diferente de zero se for bem-sucedido; caso contrário, 0.

Observações

Armazena a hora resultante na estrutura timeStamp referenciada. A DBTIMESTAMP estrutura de dados inicializada por esta função terá seu fraction membro definido como zero.

Exemplo

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

COleDateTime::GetAsSystemTime

Chame esse método para obter o COleDateTime tempo no objeto como uma estrutura de SYSTEMTIME dados.

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

Parâmetros

sysTime [en]
Uma referência a uma estrutura SYSTEMTIME para receber o valor de data/hora convertido do COleDateTime objeto.

Valor de retorno

Devolve TRUE se for bem-sucedido; FALSO se a conversão falhar ou se o COleDateTime objeto for NULL ou inválido.

Observações

GetAsSystemTime armazena o tempo resultante no objeto sysTime referenciado. A SYSTEMTIME estrutura de dados inicializada por esta função terá seu wMilliseconds membro definido como zero.

Para obter mais informações sobre as informações de status mantidas em um COleDateTime objeto, consulte GetStatus.

COleDateTime::GetAsUDATE

Chame esse método para obter o COleDateTime tempo no objeto como uma estrutura de UDATE dados.

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

Parâmetros

uData
Uma referência a uma UDATE estrutura para receber o valor de data/hora convertido do COleDateTime objeto.

Valor de retorno

Devolve TRUE se for bem-sucedido; FALSO se a conversão falhar ou se o COleDateTime objeto for NULL ou inválido.

Observações

Uma UDATE estrutura representa uma data "descompactada".

COleDateTime::GetCurrentTime

Chame essa função de membro estático para retornar o valor de data/hora atual.

static COleDateTime WINAPI GetCurrentTime() throw();

Exemplo

// 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

Obtém o dia do mês representado por esse valor de data/hora.

int GetDay() const throw();

Valor de retorno

O dia do mês representado pelo valor deste COleDateTime objeto ou COleDateTime::error se o dia não pôde ser obtido.

Observações

Os valores de retorno válidos variam entre 1 e 31.

Para obter informações sobre outras funções de membro que consultam o valor desse COleDateTime objeto, consulte as seguintes funções de membro:

Exemplo

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

Obtém o dia da semana representado por esse valor de data/hora.

int GetDayOfWeek() const throw();

Valor de retorno

O dia da semana representado pelo valor deste COleDateTime objeto ou COleDateTime::error se o dia da semana não pôde ser obtido.

Observações

Os valores de retorno válidos variam entre 1 e 7, onde 1=domingo, 2=segunda-feira e assim por diante.

Para obter informações sobre outras funções de membro que consultam o valor desse COleDateTime objeto, consulte as seguintes funções de membro:

Exemplo

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

COleDateTime::GetDayOfYear

Obtém o dia do ano representado por esse valor de data/hora.

int GetDayOfYear() const throw();

Valor de retorno

O dia do ano representado pelo valor deste COleDateTime objeto ou COleDateTime::error se o dia do ano não pôde ser obtido.

Observações

Os valores de retorno válidos variam entre 1 e 366, onde 1 de janeiro = 1.

Para obter informações sobre outras funções de membro que consultam o valor desse COleDateTime objeto, consulte as seguintes funções de membro:

Exemplo

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

COleDateTime::GetHour

Obtém a hora representada por esse valor de data/hora.

int GetHour() const throw();

Valor de retorno

A hora representada pelo valor deste COleDateTime objeto ou COleDateTime::error se a hora não pôde ser obtida.

Observações

Os valores de retorno válidos variam entre 0 e 23.

Para obter informações sobre outras funções de membro que consultam o valor desse COleDateTime objeto, consulte as seguintes funções de membro:

Exemplo

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

Obtém o minuto representado por esse valor de data/hora.

int GetMinute() const throw();

Valor de retorno

O minuto representado pelo valor deste COleDateTime objeto ou COleDateTime::error se o minuto não pôde ser obtido.

Observações

Os valores de retorno válidos variam entre 0 e 59.

Para obter informações sobre outras funções de membro que consultam o valor desse COleDateTime objeto, consulte as seguintes funções de membro:

Exemplo

Veja o exemplo de GetHour.

COleDateTime::GetMonth

Obtém o mês representado por esse valor de data/hora.

int GetMonth() const throw();

Valor de retorno

O mês representado pelo valor deste COleDateTime objeto ou COleDateTime::error se o mês não pôde ser obtido.

Observações

Os valores de retorno válidos variam entre 1 e 12.

Para obter informações sobre outras funções de membro que consultam o valor desse COleDateTime objeto, consulte as seguintes funções de membro:

Exemplo

Veja o exemplo de GetDay.

COleDateTime::GetSecond

Obtém o segundo representado por esse valor de data/hora.

int GetSecond() const throw();

Valor de retorno

O segundo representado pelo valor deste COleDateTime objeto ou COleDateTime::error se o segundo não pôde ser obtido.

Observações

Os valores de retorno válidos variam entre 0 e 59.

Observação

A COleDateTime classe não suporta segundos bissextos.

Para obter mais informações sobre a implementação do COleDateTime, consulte o artigo Data e hora: suporte à automação.

Para obter informações sobre outras funções de membro que consultam o valor desse COleDateTime objeto, consulte as seguintes funções de membro:

Exemplo

Veja o exemplo de GetHour.

COleDateTime::GetStatus

Obtém o status (validade) de um determinado COleDateTime objeto.

DateTimeStatus GetStatus() const throw();

Valor de retorno

Devolve o estado deste COleDateTime valor. Se você chamar GetStatus um COleDateTime objeto construído com o padrão, ele retornará válido. Se você chamar GetStatus um COleDateTime objeto inicializado com o construtor definido como null, GetStatus retornará null.

Observações

O valor de DateTimeStatus retorno é definido pelo tipo enumerado, que é definido dentro da COleDateTime classe.

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

Para obter uma breve descrição desses valores de status, consulte a seguinte lista:

  • COleDateTime::error Indica que ocorreu um erro ao tentar obter parte do valor de data/hora.

  • COleDateTime::valid Indica que este COleDateTime objeto é válido.

  • COleDateTime::invalid Indica que esse COleDateTime objeto é inválido, ou seja, seu valor pode estar incorreto.

  • COleDateTime::null Indica que esse COleDateTime objeto é null, ou seja, que nenhum valor foi fornecido para esse objeto. (Isso é "null" no sentido de banco de dados de "não ter valor", em oposição ao C++ NULL.)

O status de um COleDateTime objeto é inválido nos seguintes casos:

  • Se o seu valor for definido a partir de um VARIANT ou COleVariant valor que não pôde ser convertido para um valor de data/hora.

  • Se seu valor for definido a partir de um time_t, SYSTEMTIMEou FILETIME valor que não pôde ser convertido em um valor de data/hora válido.

  • Se o seu valor for definido por SetDateTime com valores de parâmetro inválidos.

  • Se este objeto tiver sofrido um estouro ou subfluxo durante uma operação de atribuição aritmética, ou seja, += ou -=.

  • Se um valor inválido foi atribuído a este objeto.

  • Se o status deste objeto foi explicitamente definido como inválido usando SetStatus.

Para obter mais informações sobre as operações que podem definir o status como inválido, consulte as seguintes funções de membro:

Para obter mais informações sobre os limites para COleDateTime valores, consulte o artigo Data e hora: suporte à automação.

Exemplo

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

Obtém o ano representado por esse valor de data/hora.

int GetYear() const throw();

Valor de retorno

O ano representado pelo valor deste COleDateTime objeto ou COleDateTime::error se o ano não pôde ser obtido.

Observações

Os valores de retorno válidos variam entre 100 e 9999, o que inclui o século.

Para obter informações sobre outras funções de membro que consultam o valor desse COleDateTime objeto, consulte as seguintes funções de membro:

Para obter mais informações sobre os limites para COleDateTime valores, consulte o artigo Data e hora: suporte à automação.

Exemplo

Veja o exemplo de GetDay.

COleDateTime::m_dt

A estrutura subjacente DATE para este COleDateTime objeto.

DATE m_dt;

Observações

Atenção

Alterar o valor no objeto acessado DATE pelo ponteiro retornado por esta função alterará o valor desse COleDateTime objeto. Ele não altera o status deste COleDateTime objeto.

Para obter mais informações sobre a implementação do DATE objeto, consulte o artigo Data e hora: suporte à automação.

COleDateTime::m_status

Contém o status deste COleDateTime objeto.

DateTimeStatus m_status;

Observações

O tipo desse membro de dados é o tipo DateTimeStatusenumerado , que é definido dentro da COleDateTime classe. Para obter mais informações, consulte COleDateTime::GetStatus.

Atenção

Este membro de dados é para situações avançadas de programação. Você deve usar as funções de membro embutido GetStatus e SetStatus. Consulte SetStatus para obter mais precauções em relação à configuração explícita desse membro de dados.

COleDateTime::operador =

Copia um COleDateTime valor.

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();

Observações

Esses operadores de atribuição sobrecarregados copiam o valor de data/hora de origem para este COleDateTime objeto. Segue-se uma breve descrição de cada um destes operadores de atribuição sobrecarregados:

  • operator =(dateSrc) O valor e o status do operando são copiados para este COleDateTime objeto.

  • operador =(varSrc) Se a conversão do valor VARIANT (ou objeto COleVariant ) para uma data/hora (VT_DATE) for bem-sucedida, o valor convertido será copiado para esse COleDateTime objeto e seu status será definido como válido. Se a conversão não for bem-sucedida, o valor deste objeto será definido como zero (30 de dezembro de 1899, meia-noite) e seu status como inválido.

  • operator =(dtSrc) O DATE valor é copiado para este COleDateTime objeto e seu status é definido como válido.

  • operator =(timeSrc) O time_t valor ou __time64_t é convertido e copiado para este COleDateTime objeto. Se a conversão for bem-sucedida, o status deste objeto será definido como válido; se não tiver êxito, é definido como inválido.

  • operador =(systimeSrc) O valor SYSTEMTIME é convertido e copiado para este COleDateTime objeto. Se a conversão for bem-sucedida, o status deste objeto será definido como válido; se não tiver êxito, é definido como inválido.

  • operator =(uDate) O UDATE valor é convertido e copiado para este COleDateTime objeto. Se a conversão for bem-sucedida, o status deste objeto será definido como válido; se não tiver êxito, é definido como inválido. Uma UDATE estrutura representa uma data "descompactada". Para obter mais informações, consulte a função VarDateFromUdate.

  • operator =(filetimeSrc) O valor FILETIME é convertido e copiado para este COleDateTime objeto. Se a conversão for bem-sucedida, o status deste objeto será definido como válido; caso contrário, é definido como inválido. FILETIME usa o Tempo Universal Coordenado (UTC), portanto, se você passar um horário UTC na estrutura, seus resultados serão convertidos da hora UTC para a hora local e serão armazenados como hora variante. Esse comportamento é o mesmo que no Visual C++ 6.0 e Visual C++.NET 2003 SP2. Para obter mais informações, consulte Tempos de arquivo no SDK do Windows.

Para obter mais informações, consulte a entrada VARIANT no SDK do Windows.

Para obter mais informações sobre o tipo de time_t dados, consulte a função de tempo na Referência da Biblioteca deRun-Time.

Para obter mais informações, consulte as estruturas SYSTEMTIME e FILETIME no SDK do Windows.

Para obter mais informações sobre os limites para COleDateTime valores, consulte o artigo Data e hora: suporte à automação.

COleDateTime::operador +, -

Adicionar e subtrair ColeDateTime valores.

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

Observações

COleDateTime objetos representam tempos absolutos. Os objetos COleDateTimeSpan representam tempos relativos. Os dois primeiros operadores permitem adicionar e subtrair um COleDateTimeSpan valor de um COleDateTime valor. O terceiro operador permite que você subtraia um COleDateTime valor de outro para produzir um COleDateTimeSpan valor.

Se qualquer um dos operandos for null, o status do valor resultante COleDateTime será null.

Se o valor resultante COleDateTime estiver fora dos limites de valores aceitáveis, o status desse COleDateTime valor será inválido.

Se um dos operandos for inválido e o outro não for nulo, o status do valor resultante COleDateTime será inválido.

Os + operadores e - afirmarão se o COleDateTime objeto estiver definido como null. Consulte Operadores relacionais COleDateTime para obter um exemplo.

Para obter mais informações sobre os valores de status válido, inválido e nulo, consulte a variável membro m_status .

Para obter mais informações sobre os limites para COleDateTime valores, consulte o artigo Data e hora: suporte à automação.

Exemplo

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::operador +=, -=

Adicione e subtraia um ColeDateTime valor deste COleDateTime objeto.

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

Observações

Esses operadores permitem que você adicione e subtraia um COleDateTimeSpan valor para e a partir disso COleDateTime. Se qualquer um dos operandos for null, o status do valor resultante COleDateTime será null.

Se o valor resultante COleDateTime estiver fora dos limites de valores aceitáveis, o status desse COleDateTime valor será definido como inválido.

Se um dos operandos for inválido e outro não for nulo, o status do valor resultante COleDateTime será inválido.

Para obter mais informações sobre os valores de status válido, inválido e nulo, consulte a variável membro m_status .

Os += operadores e -= afirmarão se o COleDateTime objeto estiver definido como null. Consulte Operadores relacionais COleDateTime para obter um exemplo.

Para obter mais informações sobre os limites para COleDateTime valores, consulte o artigo Data e hora: suporte à automação.

COleDateTime::operador DATE

Converte um ColeDateTime valor em um DATEarquivo .

operator DATE() const throw();

Observações

Este operador retorna um DATE objeto cujo valor é copiado desse COleDateTime objeto. Para obter mais informações sobre a implementação do DATE objeto, consulte o artigo Data e hora: suporte à automação.

O DATE operador declarará se o COleDateTime objeto estiver definido como null. Consulte Operadores relacionais COleDateTime para obter um exemplo.

COleDateTime::P arseDateTime

Analisa uma cadeia de caracteres para ler um valor de data/hora.

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

Parâmetros

lpszDate
Um ponteiro para a cadeia de caracteres terminada em nulo que deve ser analisada. Para obter detalhes, consulte Observações.

dwBandeiras
Indica sinalizadores para configurações de localidade e análise. Uma ou mais das seguintes bandeiras:

  • LOCALE_NOUSEROVERRIDE Use as configurações de localidade padrão do sistema, em vez de configurações de usuário personalizadas.

  • VAR_TIMEVALUEONLY Ignore a parte da data durante a análise.

  • VAR_DATEVALUEONLY Ignore a parte de tempo durante a análise.

LCID
Indica o ID de localidade a ser usado para a conversão.

Valor de retorno

Retorna TRUE se a cadeia de caracteres foi convertida com êxito em um valor de data/hora, caso contrário, FALSE.

Observações

Se a cadeia de caracteres foi convertida com êxito em um valor de data/hora, o valor desse COleDateTime objeto é definido como esse valor e seu status como válido.

Observação

Os valores anuais devem situar-se entre 100 e 9999, inclusive.

O parâmetro lpszDate pode assumir uma variedade de formatos. Por exemplo, as seguintes cadeias de caracteres contêm formatos de data/hora aceitáveis:

"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

A ID de localidade também afetará se o formato de cadeia de caracteres é aceitável para conversão em um valor de data/hora.

No caso de VAR_DATEVALUEONLY, o valor de hora é definido como hora 0 ou meia-noite. No caso de VAR_TIMEVALUEONLY, o valor da data é definido como 0, ou seja, 30 de dezembro de 1899.

Se a cadeia de caracteres não puder ser convertida em um valor de data/hora ou se houver um estouro numérico, o status desse COleDateTime objeto será inválido.

Para obter mais informações sobre os limites e a implementação COleDateTime de valores, consulte o artigo Data e hora: suporte à automação.

COleDateTime::SetDate

Define a data deste COleDateTime objeto.

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

Parâmetros

nAno
Indica o ano a ser copiado para este COleDateTime objeto.

nMês
Indica o mês a ser copiado para este COleDateTime objeto.

nDia
Indica o dia a ser copiado para este COleDateTime objeto.

Valor de retorno

Zero se o valor deste COleDateTime objeto foi definido com êxito, caso contrário, 1. Esse valor de retorno é baseado no DateTimeStatus tipo enumerado. Para obter mais informações, consulte a função de membro SetStatus .

Observações

A data é definida com os valores especificados. A hora está marcada para a hora 0, meia-noite.

Consulte a tabela a seguir para obter limites para os valores dos parâmetros:

Parâmetro Limites
nAno 100 - 9999
nMês 1 - 12
nDia 0 - 31

Se o dia do mês transbordar, ele é convertido para o dia correto do mês seguinte e o mês e/ou ano é incrementado em conformidade. Um valor de dia zero indica o último dia do mês anterior. O comportamento é o mesmo que SystemTimeToVariantTime.

Se o valor de data especificado pelos parâmetros não for válido, o status deste objeto será definido como COleDateTime::invalid. Você deve usar GetStatus para verificar a DATE validade do valor e não deve assumir que o valor de m_dt permanecerá inalterado.

Aqui estão alguns exemplos de valores de data:

nAno nMês nDia Valor
2000 2 29 29 de fevereiro de 2000
1776 7 4 4 de julho de 1776
1925 4 35 35 de abril de 1925 (data inválida)
10 000 1 1 1 de janeiro de 10000 (data inválida)

Para definir data e hora, consulte COleDateTime::SetDateTime.

Para obter informações sobre funções de membro que consultam o valor desse COleDateTime objeto, consulte as seguintes funções de membro:

Para obter mais informações sobre os limites para COleDateTime valores, consulte o artigo Data e hora: suporte à automação.

Exemplo

// 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

Define a data e a hora deste COleDateTime objeto.

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

Parâmetros

nAno, nMês, nDia, nHora, nMin, nSec
Indique os componentes de data e hora a serem copiados para este COleDateTime objeto.

Valor de retorno

Zero se o valor deste COleDateTime objeto foi definido com êxito, caso contrário, 1. Esse valor de retorno é baseado no DateTimeStatus tipo enumerado. Para obter mais informações, consulte a função de membro SetStatus .

Observações

Consulte a tabela a seguir para obter limites para os valores dos parâmetros:

Parâmetro Limites
nAno 100 - 9999
nMês 1 - 12
nDia 0 - 31
nHora 0 - 23
nMin 0 - 59
nSec 0 - 59

Se o dia do mês transbordar, ele é convertido para o dia correto do mês seguinte e o mês e/ou ano é incrementado em conformidade. Um valor de dia zero indica o último dia do mês anterior. O comportamento é o mesmo que SystemTimeToVariantTime.

Se o valor de data ou hora especificado pelos parâmetros não for válido, o status deste objeto será definido como inválido e o valor desse objeto não será alterado.

Aqui estão alguns exemplos de valores de tempo:

nHora nMin nSec Valor
1 3 3 01:03:03
23 45 0 23:45:00
25 30 0 Inválido
9 60 0 Inválido

Aqui estão alguns exemplos de valores de data:

nAno nMês nDia Valor
1995 4 15 15 de abril de 1995
1789 7 14 17 de julho de 1789
1925 2 30 Inválido
10 000 1 1 Inválido

Para definir apenas a data, consulte COleDateTime::SetDate. Para definir apenas a hora, consulte COleDateTime::SetTime.

Para obter informações sobre funções de membro que consultam o valor desse COleDateTime objeto, consulte as seguintes funções de membro:

Para obter mais informações sobre os limites para COleDateTime valores, consulte o artigo Data e hora: suporte à automação.

Exemplo

Consulte o exemplo de GetStatus.

COleDateTime::SetStatus

Define o status desse COleDateTime objeto.

void SetStatus(DateTimeStatus status) throw();

Parâmetros

Situação
O novo valor de status para este COleDateTime objeto.

Observações

O valor do parâmetro DateTimeStatus é definido pelo tipo enumerado, que é definido dentro da COleDateTime classe. Consulte COleDateTime::GetStatus para obter detalhes.

Atenção

Esta função é para situações de programação avançada. Esta função não altera os dados neste objeto. Na maioria das vezes, ele será usado para definir o status como nulo ou inválido. O operador de atribuição (operador =) e SetDateTime definem o status do objeto com base no(s) valor(es) de origem.

Exemplo

Consulte o exemplo de GetStatus.

COleDateTime::SetTime

Define a hora deste COleDateTime objeto.

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

Parâmetros

nHora, nMin, nSec
Indique os componentes de tempo a serem copiados para este COleDateTime objeto.

Valor de retorno

Zero se o valor deste COleDateTime objeto foi definido com êxito, caso contrário, 1. Esse valor de retorno é baseado no DateTimeStatus tipo enumerado. Para obter mais informações, consulte a função de membro SetStatus .

Observações

A hora é definida para os valores especificados. A data está marcada para a data 0, ou seja, 30 de dezembro de 1899.

Consulte a tabela a seguir para obter limites para os valores dos parâmetros:

Parâmetro Limites
nHora 0 - 23
nMin 0 - 59
nSec 0 - 59

Se o valor de tempo especificado pelos parâmetros não for válido, o status deste objeto será definido como inválido e o valor desse objeto não será alterado.

Aqui estão alguns exemplos de valores de tempo:

nHora nMin nSec Valor
1 3 3 01:03:03
23 45 0 23:45:00
25 30 0 Inválido
9 60 0 Inválido

Para definir data e hora, consulte COleDateTime::SetDateTime.

Para obter informações sobre funções de membro que consultam o valor desse COleDateTime objeto, consulte as seguintes funções de membro:

Para obter mais informações sobre os limites para COleDateTime valores, consulte o artigo Data e hora: suporte à automação.

Exemplo

Veja o exemplo de SetDate.

Ver também

Classe COleVariant
Classe CTime
Classe CTimeSpan
Gráfico de Hierarquia
Classes compartilhadas ATL/MFC