Clase COleDateTime

Encapsula el tipo de datos DATE que se usa en la automatización OLE.

Sintaxis

class COleDateTime

Miembros

Constructores públicos

Nombre Descripción
COleDateTime::COleDateTime Construye un objeto COleDateTime.

Métodos públicos

Nombre Descripción
COleDateTime::Format Genera una representación de cadena con formato de un objeto COleDateTime.
COleDateTime::GetAsDBTIMESTAMP Llame a este método para obtener la hora del objeto COleDateTime como una estructura de datos DBTIMESTAMP.
COleDateTime::GetAsSystemTime Llame a este método para obtener la hora del objeto COleDateTime como una estructura de datos SYSTEMTIME.
COleDateTime::GetAsUDATE Llame a este método para obtener la hora de COleDateTime como una estructura de datos UDATE.
COleDateTime::GetCurrentTime Crea un objeto COleDateTime que representa la hora actual (función miembro estática).
COleDateTime::GetDay Devuelve el día que representa este objeto COleDateTime (1 - 31).
COleDateTime::GetDayOfWeek Devuelve el día de la semana que representa este objeto COleDateTime (domingo = 1).
COleDateTime::GetDayOfYear Devuelve el día del año que representa este objeto COleDateTime (Ene 1 = 1).
COleDateTime::GetHour Devuelve la hora que representa este objeto COleDateTime (0 - 23).
COleDateTime::GetMinute Devuelve el minuto que representa este objeto COleDateTime (0 - 59).
COleDateTime::GetMonth Devuelve el mes que representa este objeto COleDateTime (1 - 12).
COleDateTime::GetSecond Devuelve el segundo que representa este objeto COleDateTime (0 - 59).
COleDateTime::GetStatus Obtiene el estado (validez) de este objeto COleDateTime.
COleDateTime::GetYear Devuelve el año que representa este objeto COleDateTime.
COleDateTime::ParseDateTime Lee un valor de fecha y hora de una cadena y establece el valor de COleDateTime.
COleDateTime::SetDate Establece el valor de este objeto COleDateTime en el valor de solo fecha especificado.
COleDateTime::SetDateTime Establece el valor de este objeto COleDateTime en el valor de fecha y hora especificado.
COleDateTime::SetStatus Establece el estado (validez) de este objeto COleDateTime.
COleDateTime::SetTime Establece el valor de este objeto COleDateTime en el valor de solo hora especificado.

Operadores públicos

Nombre Descripción
COleDateTime::operator ==, COleDateTime::operator <, etc. Compare dos valores COleDateTime.
COleDateTime::operator +, COleDateTime::operator - Agregue y reste valores COleDateTime.
COleDateTime::operator +=, COleDateTime::operator -= Agregue y reste un valor COleDateTime de este objeto COleDateTime.
COleDateTime::operator = Copia un valor COleDateTime.
COleDateTime::operator DATE, COleDateTime::operator Date* Convierte un valor COleDateTime en DATE o en DATE*.

Miembros de datos públicos

Nombre Descripción
COleDateTime::m_dt Contiene el objeto subyacente DATE para este objeto COleDateTime.
COleDateTime::m_status Contiene el estado de este objeto COleDateTime.

Comentarios

COleDateTime no tiene una clase base.

Es uno de los tipos posibles para el tipo de datos VARIANT de automatización OLE. Un valor COleDateTime representa un valor absoluto de fecha y hora.

El tipo DATE se implementa como un valor de punto flotante. Los días se miden desde el 30 de diciembre de 1899, a medianoche. En la tabla siguiente se muestran algunas fechas y sus valores asociados:

Fecha Valor
29 de diciembre de 1899, medianoche -1.0
29 de diciembre de 1899, 6 A.M -1.25
30 de diciembre de 1899, medianoche 0,0
31 de diciembre de 1899, medianoche 1,0
1 de enero de 1900, 6 A.M. 2.25

Precaución

En la tabla anterior, aunque los valores de día se convierten en negativos antes de la medianoche del 30 de diciembre de 1899, esto no ocurre con los valores de hora del día. Por ejemplo, 6:00 AM siempre se representa mediante un valor fraccional 0,25 independientemente de si el entero que representa el día es positivo (posterior al 30 de diciembre de 1899) o negativo (anterior al 30 de diciembre de 1899). Esto significa que una comparación de punto flotante simple ordenaría erróneamente una clase COleDateTime que representa las 6:00 A.M. el 29/12/1899 como posterior a una que representa las 7:00 A.M. del mismo día.

La clase COleDateTime controla las fechas del 1 de enero de 100 hasta el 31 de diciembre de 9999. La clase COleDateTime usa el calendario gregoriano; no admite fechas julianas. COleDateTime omite el horario de verano. (Consulte Fecha y hora: compatibilidad con Automation).

Nota:

Puede usar el formato %y para recuperar un año de dos dígitos solo para las fechas a partir de 1900. Si usa el formato %y en una fecha anterior a 1900, el código genera un error ASSERT.

Este tipo también se usa para representar valores de solo fecha o de solo hora. Por convención, la fecha 0 (30 de diciembre de 1899) se usa para los valores de solo hora y la hora 00:00 (medianoche) se usa para los valores de solo fecha.

Si crea un objeto COleDateTime mediante una fecha inferior a 100, se acepta la fecha, pero las llamadas posteriores a GetYear, GetMonth, GetDay, GetHour, GetMinute y GetSecond generan un error y devuelven -1. Anteriormente, podía usar fechas de dos dígitos, pero las fechas deben ser de 100 o más en MFC 4.2 y versiones posteriores.

Para evitar problemas, especifique una fecha de cuatro dígitos. Por ejemplo:

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

Las operaciones aritméticas básicas para los valores COleDateTime usan la clase complementaria COleDateTimeSpan. los valores COleDateTimeSpan definen un intervalo de tiempo. La relación entre estas clases es similar a la de CTime y CTimeSpan.

Para más información sobre las clases COleDateTime y COleDateTimeSpan, consulte el artículo Fecha y hora: compatibilidad con Automation.

Requisitos

Encabezado: ATLComTime.h

Operadores relacionales de COleDateTime

Operadores de comparación.

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

date
Objeto COleDateTime que se va a comparar.

Comentarios

Nota:

Se producirá una macro ATLASSERT si alguno de los dos operandos es no válido.

Ejemplos

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

Los operadores >=, <=, > y < declararán si el objeto COleDateTime está establecido en null.

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

COleDateTime::COleDateTime

Construye un 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

dateSrc
Un objeto COleDateTime existente que se va a copiar en el nuevo objeto COleDateTime.

varSrc
Estructura de datos VARIANT existente (posiblemente un objeto COleVariant) que se va a convertir en un valor de fecha y hora (VT_DATE) y copiar en el objeto COleDateTime nuevo.

dtSrc
Valor de fecha y hora (DATE) que se va a copiar en el objeto COleDateTime nuevo.

timeSrc
Valor time_t o __time64_t que se va a convertir en un valor de fecha y hora y copiar en el objeto COleDateTime nuevo.

systimeSrc
Estructura SYSTEMTIME que se va a convertir en un valor de fecha y hora y copiar en el objeto COleDateTime nuevo.

filetimeSrc
Estructura FILETIME que se va a convertir en un valor de fecha y hora y copiar en el objeto COleDateTime nuevo. FILETIME usa la hora coordinada universal (UTC), por lo que si pasa una hora local en la estructura, los resultados serán incorrectos. Para más información, consulte Tiempos de archivo en Windows SDK.

nYear, nMonth, nDay, nHour, nMin, nSec
Indican los valores de fecha y hora que se van a copiar en el objeto COleDateTime nuevo.

wDosDate, wDosTime
Valores de fecha y hora de MS-DOS que se va a convertir en un valor de fecha y hora y copiar en el objeto COleDateTime nuevo.

timeStamp
Referencia a una estructura DBTimeStamp que contiene la hora local actual.

Comentarios

Todos estos constructores crean objetos COleDateTime nuevos inicializados en el valor especificado. En la tabla siguiente se muestran intervalos válidos para cada componente de fecha y hora:

Componente de fecha y hora Intervalo válido
year 100 - 9999
month 0 - 12
day 0 - 31
hour 0 - 23
minute 0 - 59
second 0 - 59

Tenga en cuenta que el límite superior real del componente de día varía en función de los componentes de mes y año. Para más información, consulte las funciones miembro SetDate o SetDateTime.

Ahora se muestra una breve descripción de cada constructor:

  • COleDateTime() Construye un objeto COleDateTime inicializado en 0 (medianoche, 30 de diciembre de 1899).

  • COleDateTime(dateSrc) Construye un objeto COleDateTime nuevo a partir de un objeto COleDateTime existente.

  • COleDateTime(varSrc) Construye un objeto COleDateTime. Intenta convertir una estructura VARIANT o un objeto COleVariant en un valor de fecha y hora ( VT_DATE). Si esta conversión se realiza correctamente, el valor convertido se copia en el objeto COleDateTime nuevo. Si no es así, el valor del objeto COleDateTime se establece en 0 (medianoche, 30 de diciembre de 1899) y su estado en no válido.

  • COleDateTime(dtSrc) Construye un objeto COleDateTime a partir de un valor DATE.

  • COleDateTime(timeSrc) Construye un objeto COleDateTime a partir de un valor time_t.

  • COleDateTime(systimeSrc) Construye un objeto COleDateTime a partir de un valor SYSTEMTIME.

  • COleDateTime(filetimeSrc) Construye un objeto COleDateTime a partir de un valor FILETIME. . FILETIME usa la hora coordinada universal (UTC), por lo que si pasa una hora local en la estructura, los resultados serán incorrectos. Para más información, consulte Tiempos de archivo en Windows SDK.

  • COleDateTime(nYear, nMonth, nDay, nHour, nMin, nSec) Construye un objeto COleDateTime a partir de los valores numéricos especificados.

  • COleDateTime(wDosDate, wDosTime) Construye un objeto COleDateTime a partir de los valores de fecha y hora de MS-DOS especificados.

Para más información sobre el tipo de datos time_t, vea la función time en la Referencia de la biblioteca en tiempo de ejecución.

Para más información, consulte las estructuras SYSTEMTIME y FILETIME en Windows SDK.

Para más información sobre los límites de valores COleDateTime, consulte el artículo Fecha y hora: compatibilidad con Automation.

Nota:

El constructor que usa el parámetro DBTIMESTAMP solo está disponible cuando se incluye OLEDB.h.

Ejemplo

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 representación con formato del valor de fecha y hora.

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

Parámetros

dwFlags
Indica una de las siguientes marcas de configuración regional:

  • LOCALE_NOUSEROVERRIDE Use la configuración regional predeterminada del sistema, en vez de la configuración personalizada del usuario.

  • VAR_TIMEVALUEONLY Omita la parte de fecha durante el análisis.

  • VAR_DATEVALUEONLY Omita la parte de tiempo durante el análisis.

lcid
Indica el id. de configuración regional que se va a usar para la conversión. Para más información sobre los identificadores de idioma, consulte Identificadores de idioma.

lpszFormat
Cadena de formato similar a la cadena de formato printf. Cada código de formato, precedido por un signo de porcentaje ( %), se reemplaza por el componente COleDateTime correspondiente. Otros caracteres de la cadena de formato se copian sin cambios en la cadena devuelta. Para más información, consulte strftime de la función en tiempo de ejecución. El valor y el significado de los códigos de formato de Format son los siguientes:

  • %H Horas en el día actual

  • %M Minutos en la hora actual

  • %S Segundos en el minuto actual

  • %% Signo de porcentaje

nFormatID
Id. de recurso de la cadena de control de formato.

Valor devuelto

Una cadena CString que contiene el valor de fecha y hora con formato.

Comentarios

Si el estado de este objeto COleDateTime es null, el valor devuelto es una cadena vacía. Si el estado es no válido, la cadena de devolución ATL_IDS_DATETIME_INVALID especifica el recurso de cadena.

Ahora se muestra una breve descripción de los tres formularios de esta función:

Format( dwFlags, lcid)
Este formulario da formato al valor mediante las especificaciones de idioma (Id. de configuración regional) para la fecha y hora. Con los parámetros predeterminados, este formulario imprimirá la fecha y la hora, a menos que la parte de hora sea 0 (medianoche), en cuyo caso imprimirá solo la fecha, o la parte de fecha es 0 (30 de diciembre de 1899), en cuyo caso imprimirá solo la hora. Si el valor de fecha y hora es 0 (30 de diciembre de 1899, medianoche), este formulario con los parámetros predeterminados imprimirá medianoche.

Format( lpszFormat)
Este formulario da formato al valor mediante la cadena de formato que contiene códigos de formato especiales precedidos por un signo de porcentaje (%), como en printf. La cadena de formato se pasa a la función como parámetro. Para más información sobre los códigos de formato, consulte strftime, wcsftime en la Referencia de biblioteca de tiempo de ejecución.

Format( nFormatID)
Este formulario da formato al valor mediante la cadena de formato que contiene códigos de formato especiales precedidos por un signo de porcentaje (%), como en printf. La cadena de formato es un recurso. El id. de este recurso de cadena se pasa como parámetro. Para más información sobre los códigos de formato, consulte strftime, wcsftime en la Referencia de biblioteca de tiempo de ejecución.

Ejemplo

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

Llame a este método para obtener la hora del objeto COleDateTime como una estructura de datos DBTIMESTAMP.

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

Parámetros

timeStamp
Referencia a una estructura DBTimeStamp.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Almacena la hora resultante en la estructura timeStamp a la que se hace referencia. La estructura de datos DBTIMESTAMP inicializada por esta función tendrá su miembro fraction establecido en cero.

Ejemplo

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

COleDateTime::GetAsSystemTime

Llame a este método para obtener la hora del objeto COleDateTime como una estructura de datos SYSTEMTIME.

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

Parámetros

sysTime
Referencia a una estructura SYSTEMTIME para recibir el valor de fecha y hora convertido del objeto COleDateTime.

Valor devuelto

Devuelve TRUE si se ejecuta correctamente; FALSE si se produce un error en la conversión o si el objeto COleDateTime es null o no válido.

Comentarios

GetAsSystemTime almacena la hora resultante en el objeto sysTime al que se hace referencia. La estructura de datos SYSTEMTIME inicializada por esta función tendrá su miembro wMilliseconds establecido en cero.

Para más información sobre la información de estado contenida en un objeto COleDateTime, consulte GetStatus.

COleDateTime::GetAsUDATE

Llame a este método para obtener la hora del objeto COleDateTime como una estructura de datos UDATE.

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

Parámetros

uDate
Referencia a una estructura UDATE para recibir el valor de fecha y hora convertido del objeto COleDateTime.

Valor devuelto

Devuelve TRUE si se ejecuta correctamente; FALSE si se produce un error en la conversión o si el objeto COleDateTime es null o no válido.

Comentarios

Una estructura UDATE representa una fecha "desempaquetada".

COleDateTime::GetCurrentTime

Llame a esta función miembro estática para devolver el valor de fecha y hora actual.

static COleDateTime WINAPI GetCurrentTime() throw();

Ejemplo

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

Obtiene el día del mes representado por este valor de fecha y hora.

int GetDay() const throw();

Valor devuelto

Día del mes representado por el valor de este objeto COleDateTime o COleDateTime::error si no se pudo obtener el día.

Comentarios

Los valores devueltos válidos oscilan entre 1 y 31.

Para obtener información sobre otras funciones miembro que consultan el valor de este objeto COleDateTime, vea las siguientes funciones miembro:

Ejemplo

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

Obtiene el día de la semana representado por este valor de fecha y hora.

int GetDayOfWeek() const throw();

Valor devuelto

Día de la semana representado por el valor de este objeto COleDateTime o COleDateTime::error si no se pudo obtener la semana.

Comentarios

Los valores devueltos válidos oscilan entre 1 y 7, donde 1=domingo, 2=lunes, etc.

Para obtener información sobre otras funciones miembro que consultan el valor de este objeto COleDateTime, vea las siguientes funciones miembro:

Ejemplo

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

COleDateTime::GetDayOfYear

Obtiene el día del año representado por este valor de fecha y hora.

int GetDayOfYear() const throw();

Valor devuelto

Día del año representado por el valor de este objeto COleDateTime o COleDateTime::error si no se pudo obtener el año.

Comentarios

Los valores devueltos válidos oscilan entre 1 y 366, donde el 1 de enero = 1.

Para obtener información sobre otras funciones miembro que consultan el valor de este objeto COleDateTime, vea las siguientes funciones miembro:

Ejemplo

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

COleDateTime::GetHour

Obtiene la hora representada por este valor de fecha y hora.

int GetHour() const throw();

Valor devuelto

Hora representada por el valor de este objeto COleDateTime o COleDateTime::error si no se pudo obtener la hora.

Comentarios

Los valores devueltos válidos oscilan entre 0 y 23.

Para obtener información sobre otras funciones miembro que consultan el valor de este objeto COleDateTime, vea las siguientes funciones miembro:

Ejemplo

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

Obtiene el minuto representado por este valor de fecha y hora.

int GetMinute() const throw();

Valor devuelto

Minuto representado por el valor de este objeto COleDateTime o COleDateTime::error si no se pudo obtener el minuto.

Comentarios

Los valores devueltos válidos oscilan entre 0 y 59.

Para obtener información sobre otras funciones miembro que consultan el valor de este objeto COleDateTime, vea las siguientes funciones miembro:

Ejemplo

Consulte el ejemplo de GetHour.

COleDateTime::GetMonth

Obtiene el mes representado por este valor de fecha y hora.

int GetMonth() const throw();

Valor devuelto

Mes representado por el valor de este objeto COleDateTime o COleDateTime::error si no se pudo obtener el mes.

Comentarios

Los valores devueltos válidos oscilan entre 1 y 12.

Para obtener información sobre otras funciones miembro que consultan el valor de este objeto COleDateTime, vea las siguientes funciones miembro:

Ejemplo

Consulte el ejemplo de GetDay.

COleDateTime::GetSecond

Obtiene el segundo representado por este valor de fecha y hora.

int GetSecond() const throw();

Valor devuelto

Segundo representado por el valor de este objeto COleDateTime o COleDateTime::error si no se pudo obtener el segundo.

Comentarios

Los valores devueltos válidos oscilan entre 0 y 59.

Nota:

La clase COleDateTime no admite segundos intercalares.

Para más información sobre la implementación de COleDateTime, consulte el artículo Fecha y hora: compatibilidad con Automation.

Para obtener información sobre otras funciones miembro que consultan el valor de este objeto COleDateTime, vea las siguientes funciones miembro:

Ejemplo

Consulte el ejemplo de GetHour.

COleDateTime::GetStatus

Obtiene el estado (validez) de un objeto COleDateTime determinado.

DateTimeStatus GetStatus() const throw();

Valor devuelto

Devuelve el estado de este valor COleDateTime. Si llama a GetStatus en un objeto COleDateTime construido con el valor predeterminado, devolverá válido. Si llama a GetStatus en un objeto COleDateTime inicializado con el constructor establecido en null, GetStatus devolverá null.

Comentarios

El valor devuelto se define mediante el tipo enumerado DateTimeStatus, que se define dentro de la clase COleDateTime.

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

Para una breve descripción de estos valores de estado, consulte la lista siguiente:

  • COleDateTime::error Indica que se produjo un error al intentar obtener parte del valor de fecha y hora.

  • COleDateTime::valid indica que este objeto COleDateTime es válido.

  • COleDateTime::invalid Indica que este objeto COleDateTime es no válido; es decir, su valor puede que sea incorrecto.

  • COleDateTime::null Indica que este objeto COleDateTime es null, es decir, que no se ha proporcionado ningún valor para este objeto. (Esto es "null" en el sentido de la base de datos de "no tener ningún valor", al contrario que el NULL de C++).

El estado de un objeto COleDateTime es no válido en los casos siguientes:

  • Si su valor se establece a partir de un valor VARIANT o COleVariant que no se pudo convertir en un valor de fecha y hora.

  • Si su valor se establece a partir de un valor time_t, SYSTEMTIME o FILETIME que no se pudo convertir en un valor de fecha y hora válido.

  • Si SetDateTime establece su valor con valores de parámetro no válidos.

  • Si este objeto ha experimentado un desbordamiento o subdesbordamiento durante una operación de asignación aritmética, es decir, += o -=.

  • Si se asignó un valor no válido a este objeto.

  • Si el estado de este objeto se estableció explícitamente en no válido mediante SetStatus.

Para más información sobre las operaciones que pueden establecer el estado en no válido, consulte las funciones miembro siguientes:

Para más información sobre los límites de valores COleDateTime, consulte el artículo Fecha y hora: compatibilidad con Automation.

Ejemplo

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

Obtiene el año representado por este valor de fecha y hora.

int GetYear() const throw();

Valor devuelto

Año representado por el valor de este objeto COleDateTime o COleDateTime::error si no se pudo obtener el año.

Comentarios

Los valores devueltos válidos oscilan entre 100 y 9999, que incluye el siglo.

Para obtener información sobre otras funciones miembro que consultan el valor de este objeto COleDateTime, vea las siguientes funciones miembro:

Para más información sobre los límites de valores COleDateTime, consulte el artículo Fecha y hora: compatibilidad con Automation.

Ejemplo

Consulte el ejemplo de GetDay.

COleDateTime::m_dt

Estructura subyacente DATE de este objetoCOleDateTime.

DATE m_dt;

Comentarios

Precaución

Cambiar el valor del objeto DATE al que accede el puntero devuelto por esta función cambiará el valor de este objeto COleDateTime. No cambia el estado de este objeto COleDateTime.

Para más información sobre la implementación del objeto DATE, consulte el artículo Fecha y hora: compatibilidad con Automation.

COleDateTime::m_status

Contiene el estado de este objeto COleDateTime.

DateTimeStatus m_status;

Comentarios

El tipo de este miembro de datos es el tipo enumerado DateTimeStatus, que se define dentro de la clase COleDateTime. Para más información, vea COleDateTime::GetStatus.

Precaución

Este miembro de datos es para situaciones de programación avanzadas. Debe usar las funciones miembro insertadas GetStatus y SetStatus. Consulte SetStatus para obtener más precauciones sobre cómo establecer explícitamente este miembro de datos.

COleDateTime::operator =

Copia un valor COleDateTime.

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

Comentarios

Estos operadores de asignación sobrecargados copian el valor de fecha y hora de origen en este objeto COleDateTime. Ahora se muestra una breve descripción de cada uno de estos operadores de asignación sobrecargados:

  • operator =(dateSrc) El valor y el estado del operando se copian en este objeto COleDateTime.

  • operator =(varSrc) Si la conversión del valor VARIANT (o del objeto COleVariant) a una fecha y hora (VT_DATE) se realiza correctamente, el valor convertido se copia en este objeto COleDateTime y su estado se establece en válido. Si la conversión no se realiza de forma correcta, el valor de este objeto se establece en cero (30 de diciembre de 1899, medianoche) y su estado en no válido.

  • operator =(dtSrc) El valor DATE se copia en este objeto COleDateTime y su estado se establece en válido.

  • operator =(timeSrc) El valor time_t o __time64_t se convierte y copia en este objeto COleDateTime. Si la conversión se realiza correctamente, el estado de este objeto se establece en válido; de lo contrario, se establece en no válido.

  • operator =(systimeSrc) El valor SYSTEMTIME se convierte y copia en este objeto COleDateTime. Si la conversión se realiza correctamente, el estado de este objeto se establece en válido; de lo contrario, se establece en no válido.

  • operator =(uDate) El valor UDATE se convierte y copia en este objeto COleDateTime. Si la conversión se realiza correctamente, el estado de este objeto se establece en válido; de lo contrario, se establece en no válido. Una estructura UDATE representa una fecha "desempaquetada". Para más información, consulte la función VarDateFromUdate.

  • operator =(filetimeSrc) El valor FILETIME se convierte y copia en este objeto COleDateTime. Si la conversión se realiza correctamente, el estado de este objeto se establece en válido; de lo contrario, se establece en no válido. FILETIME usa la hora coordinada universal (UTC), por lo que si pasa una hora UTC en la estructura, los resultados se convertirán de la hora UTC a la hora local y se almacenarán como hora variante. Este comportamiento es el mismo que en Visual C++ 6.0 y Visual C++.NET 2003 SP2. Para más información, consulte Tiempos de archivo en Windows SDK.

Para más información, consulte la entrada VARIANT en Windows SDK.

Para más información sobre el tipo de datos time_t, vea la función time en la Referencia de la biblioteca en tiempo de ejecución.

Para más información, consulte las estructuras SYSTEMTIME y FILETIME en Windows SDK.

Para más información sobre los límites de valores COleDateTime, consulte el artículo Fecha y hora: compatibilidad con Automation.

COleDateTime::operator +, -

Agregue y reste valores ColeDateTime.

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

Comentarios

Los objetos COleDateTime representan tiempos absolutos. Los objetos COleDateTimeSpan representan horas relativas. Los dos primeros operadores permiten agregar y restar un valor COleDateTimeSpan de un valor COleDateTime. El tercer operador permite restar un valor COleDateTime de otro para producir un valor COleDateTimeSpan.

Si alguno de los operandos es null, el estado del valor COleDateTime resultante es null.

Si el valor resultante COleDateTime está fuera de los límites de valores aceptables, el estado de ese valor COleDateTime es no válido.

Si alguno de los operandos es no válido y el otro es no null, el estado del valor COleDateTime resultante es no válido.

Los operadores + y - declararán si el objeto COleDateTime está establecido en null. Consulte Operadores relacionales COleDateTime para ver un ejemplo.

Para obtener más información sobre los valores de estado válidos, no válidos y null, consulte la variable de miembro m_status.

Para más información sobre los límites de valores COleDateTime, consulte el artículo Fecha y hora: compatibilidad con Automation.

Ejemplo

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

Agregue y reste un valor ColeDateTime de este objeto COleDateTime.

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

Comentarios

Estos operadores permiten agregar y restar un valor COleDateTimeSpan a y desde este objeto COleDateTime. Si alguno de los operandos es null, el estado del valor COleDateTime resultante es null.

Si el valor COleDateTime resultante está fuera de los límites de valores aceptables, el estado de ese valor COleDateTime se establece en no válido.

Si alguno de los operandos es no válido y otro es no null, el estado del valor COleDateTime resultante es no válido.

Para obtener más información sobre los valores de estado válidos, no válidos y null, consulte la variable de miembro m_status.

Los operadores += y -= declararán si el objeto COleDateTime está establecido en null. Consulte Operadores relacionales COleDateTime para ver un ejemplo.

Para más información sobre los límites de valores COleDateTime, consulte el artículo Fecha y hora: compatibilidad con Automation.

COleDateTime::operator DATE

Convierte un valor ColeDateTime en DATE.

operator DATE() const throw();

Comentarios

Este operador devuelve un objeto DATE cuyo valor se copia de este objeto COleDateTime. Para más información sobre la implementación del objeto DATE, consulte el artículo Fecha y hora: compatibilidad con Automation.

El operador DATE declarará si el objeto COleDateTime está establecido en null. Consulte Operadores relacionales COleDateTime para ver un ejemplo.

COleDateTime::ParseDateTime

Analiza una cadena para leer un valor de fecha y hora.

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

Parámetros

lpszDate
Puntero a la cadena terminada en null que se va a analizar. Para conocer más detalles, vea la sección Comentarios.

dwFlags
Indica marcas para la configuración regional y el análisis. Una o varias de las marcas siguientes:

  • LOCALE_NOUSEROVERRIDE Use la configuración regional predeterminada del sistema, en vez de la configuración personalizada por el usuario.

  • VAR_TIMEVALUEONLY Omita la parte de fecha durante el análisis.

  • VAR_DATEVALUEONLY Omita la parte de tiempo durante el análisis.

lcid
Indica el id. de configuración regional que se va a usar para la conversión.

Valor devuelto

Devuelve TRUE si la cadena se convirtió correctamente en un valor de fecha y hora; de lo contrario, FALSE.

Comentarios

Si la cadena se convirtió correctamente en un valor de fecha y hora, el valor de este objeto COleDateTime se establece en ese valor y su estado en válido.

Nota:

Los valores de año deben estar comprendidos entre 100 y 9999, ambos inclusive.

El parámetro lpszDate puede tomar una variedad de formatos. Por ejemplo, las siguientes cadenas contienen formatos de fecha y hora aceptables:

"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

El Id. de configuración regional también afectará si el formato de cadena es aceptable para la conversión a un valor de fecha y hora.

En el caso de VAR_DATEVALUEONLY, el valor de hora se establece en la hora 0 o medianoche. En el caso de VAR_TIMEVALUEONLY, el valor de fecha se establece en la fecha 0, es decir, el 30 de diciembre de 1899.

Si la cadena no se pudo convertir en un valor de fecha y hora o si se produjo un desbordamiento numérico, el estado de este objeto COleDateTime es no válido.

Para más información sobre los límites y la implementación de valores COleDateTime, consulte el artículo Fecha y hora: compatibilidad con Automation.

COleDateTime::SetDate

Establece la fecha de este objeto COleDateTime.

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

Parámetros

nYear
Indica el año que se va a copiar en este objeto COleDateTime.

nMonth
Indica el mes que se va a copiar en este objeto COleDateTime.

nDay
Indica el día que se va a copiar en este objeto COleDateTime.

Valor devuelto

Cero si el valor de este objeto COleDateTime se estableció correctamente; de lo contrario, 1. Este valor devuelto se basa en el tipo enumerado DateTimeStatus. Para más información, vea la función miembro SetStatus.

Comentarios

La fecha se establece en los valores especificados. La hora se establece en la hora 0, medianoche.

Consulte la tabla siguiente para ver los límites de los valores de parámetro:

Parámetro Bounds
nYear 100 - 9999
nMonth 1 - 12
nDay 0 - 31

Si el día del mes se desborda, se convierte en el día correcto del mes siguiente y el mes o año se incrementa en consecuencia. Un valor de día de cero indica el último día del mes anterior. El comportamiento es el mismo que en SystemTimeToVariantTime.

Si el valor de fecha especificado por los parámetros es no válido, el estado de este objeto se establece en COleDateTime::invalid. Debe usar GetStatus para comprobar la validez del valor DATE y no debe suponer que el valor de m_dt permanecerá sin modificar.

Aquí tiene algunos ejemplos de valores de fecha:

nYear nMonth nDay Valor
2000 2 29 29 de febrero de 2000
1776 7 4 4 de julio de 1776
1925 4 35 35 de abril de 1925 (fecha no válida)
10 000 1 1 1 de enero de 10000 (fecha no válida)

Para establecer tanto la fecha como la hora, consulte COleDateTime::SetDateTime.

Para información sobre otras funciones miembro que consultan el valor de este objeto COleDateTime, vea las funciones miembro siguientes:

Para más información sobre los límites de valores COleDateTime, consulte el artículo Fecha y hora: compatibilidad con Automation.

Ejemplo

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

Establece la fecha y hora de este objeto COleDateTime.

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

Parámetros

nYear, nMonth, nDay, nHour, nMin, nSec
Indique los componentes de fecha y hora que se van a copiar en este objeto COleDateTime.

Valor devuelto

Cero si el valor de este objeto COleDateTime se estableció correctamente; de lo contrario, 1. Este valor devuelto se basa en el tipo enumerado DateTimeStatus. Para más información, vea la función miembro SetStatus.

Comentarios

Consulte la tabla siguiente para ver los límites de los valores de parámetro:

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

Si el día del mes se desborda, se convierte en el día correcto del mes siguiente y el mes o año se incrementa en consecuencia. Un valor de día de cero indica el último día del mes anterior. El comportamiento es el mismo que SystemTimeToVariantTime.

Si el valor de fecha u hora especificado por los parámetros es no válido, el estado de este objeto se establece en no válido y su valor no se cambia.

Aquí tiene algunos ejemplos de valores de tiempo:

nHour nMin nSec Valor
1 3 3 01:03:03
23 45 0 23:45:00
25 30 0 No válida
9 60 0 No válida

Aquí tiene algunos ejemplos de valores de fecha:

nYear nMonth nDay Valor
1995 4 15 15 de abril de 1995
1789 7 14 17 de julio de 1789
1925 2 30 No válida
10 000 1 1 No válida

Para establecer solo la fecha, consulte COleDateTime::SetDate. Para establecer solo la hora, consulte COleDateTime::SetTime.

Para información sobre otras funciones miembro que consultan el valor de este objeto COleDateTime, vea las funciones miembro siguientes:

Para más información sobre los límites de valores COleDateTime, consulte el artículo Fecha y hora: compatibilidad con Automation.

Ejemplo

Consulte el ejemplo de GetStatus.

COleDateTime::SetStatus

Establece el estado de este objeto COleDateTime.

void SetStatus(DateTimeStatus status) throw();

Parámetros

status
Nuevo valor de estado para este objeto COleDateTime.

Comentarios

El valor de parámetro de estado se define mediante el tipo enumerado DateTimeStatus, que se define dentro de la clase COleDateTime. Consulte COleDateTime::GetStatus para más información.

Precaución

Esta función es para situaciones de programación avanzadas. Esta función no modifica los datos de este objeto. Se usará con más frecuencia para establecer el estado en null o no válido. El operador de asignación (operator =) y SetDateTime establecen el estado del objeto en función del valor o valores de origen.

Ejemplo

Consulte el ejemplo de GetStatus.

COleDateTime::SetTime

Establece la hora de este objeto COleDateTime.

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

Parámetros

nHour, nMin, nSec
Indican los componentes de tiempo que se van a copiar en este objeto COleDateTime.

Valor devuelto

Cero si el valor de este objeto COleDateTime se estableció correctamente; de lo contrario, 1. Este valor devuelto se basa en el tipo enumerado DateTimeStatus. Para más información, vea la función miembro SetStatus.

Comentarios

La hora se establece en los valores especificados. La fecha se establece en la fecha 0, es decir, el 30 de diciembre de 1899.

Consulte la tabla siguiente para ver los límites de los valores de parámetro:

Parámetro Bounds
nHour 0 - 23
nMin 0 - 59
nSec 0 - 59

Si el valor de tiempo especificado por los parámetros es no válido, el estado de este objeto se establece en no válido y su valor no se cambia.

Aquí tiene algunos ejemplos de valores de tiempo:

nHour nMin nSec Valor
1 3 3 01:03:03
23 45 0 23:45:00
25 30 0 No válida
9 60 0 No válida

Para establecer tanto la fecha como la hora, consulte COleDateTime::SetDateTime.

Para información sobre otras funciones miembro que consultan el valor de este objeto COleDateTime, vea las funciones miembro siguientes:

Para más información sobre los límites de valores COleDateTime, consulte el artículo Fecha y hora: compatibilidad con Automation.

Ejemplo

Consulte el ejemplo de SetDate.

Consulte también

COleVariant (clase)
CTime (clase)
CTimeSpan (clase)
Gráfico de jerarquías
Clases compartidas de ATL y MFC