Поделиться через


Класс COleDateTime

Инкапсулирует тип данных, используемый DATE в автоматизации OLE.

Синтаксис

class COleDateTime

Участники

Открытые конструкторы

Имя Описание
COleDateTime::COleDateTime Формирует объект COleDateTime.

Открытые методы

Имя Описание
COleDateTime::Format Создает форматируемое строковое представление COleDateTime объекта.
COleDateTime::GetAsDBTIMESTAMP Вызовите этот метод, чтобы получить время в объекте COleDateTime DBTIMESTAMP в виде структуры данных.
COleDateTime::GetAsSystemTime Вызовите этот метод, чтобы получить время в объекте COleDateTime в виде структуры данных SYSTEMTIME .
COleDateTime::GetAsUDATE Вызовите этот метод, чтобы получить время в COleDateTime виде UDATE структуры данных.
COleDateTime::GetCurrentTime Создает объект, представляющий текущее COleDateTime время (статическую функцию-член).
COleDateTime::GetDay Возвращает день, когда этот COleDateTime объект представляет (1 – 31).
COleDateTime::GetDayOfWeek Возвращает день недели этот COleDateTime объект представляет (воскресенье = 1).
COleDateTime::GetDayOfYear Возвращает день года, который представляет этот COleDateTime объект (1 января = 1).
COleDateTime::GetHour Возвращает час, который представляет объект COleDateTime (от 0 до 23).
COleDateTime::GetMinute Возвращает минуту, которую представляет объект COleDateTime (0 – 59).
COleDateTime::GetMonth Возвращает месяц, который представляет объект COleDateTime (1 – 12).
COleDateTime::GetSecond Возвращает второй объект, COleDateTime представляющий (0 – 59).
COleDateTime::GetStatus Возвращает состояние (допустимость) этого COleDateTime объекта.
COleDateTime::GetYear Возвращает год, который представляет этот COleDateTime объект.
COleDateTime::P arseDateTime Считывает значение даты и времени из строки и задает значение COleDateTime.
COleDateTime::SetDate Задает значение этого COleDateTime объекта для указанного значения только даты.
COleDateTime::SetDateTime Задает значение этого COleDateTime объекта указанным значением даты и времени.
COleDateTime::SetStatus Задает состояние (допустимость) этого COleDateTime объекта.
COleDateTime::SetTime Задает значение этого COleDateTime объекта в заданное значение только для времени.

Открытые операторы

Имя Описание
COleDateTime::operator ==, COleDateTime::operator <и т. д. Сравните два COleDateTime значения.
COleDateTime::operator +, COleDateTime::operator — Добавление и вычитание COleDateTime значений.
COleDateTime::operator +=, COleDateTime::operator -= Добавьте и вычитает COleDateTime значение из этого COleDateTime объекта.
COleDateTime::operator = Копирует COleDateTime значение.
COleDateTime::operator DATE, COleDateTime::operator Date* COleDateTime Преобразует значение в a DATE или a DATE*.

Открытые члены данных

Имя Описание
COleDateTime::m_dt Содержит базовый DATE объект.COleDateTime
COleDateTime::m_status Содержит состояние этого COleDateTime объекта.

Замечания

COleDateTime не имеет базового класса.

Это один из возможных типов для типа данных VARIANT автоматизации OLE. COleDateTime Значение представляет абсолютное значение даты и времени.

Тип DATE реализуется как значение с плавающей запятой. Дни измеряются с 30 декабря 1899 года в полночь. В следующей таблице показаны некоторые даты и связанные с ними значения:

Дата Значение
29 декабря 1899 г., полночь –1,0
29 декабря 1899 г., 6 утра –1,25
30 декабря 1899 года, полночь 0,0
31 декабря 1899 г., полночь 1.0
1 января 1900 г. 6 утра 2,25

Внимание

В таблице выше, хотя значения дня становятся отрицательными до полуночи 30 декабря 1899 года, значения времени дня не станут. Например, 6:00 всегда представлено дробным значением 0,25 независимо от того, является ли целое число, представляющее день положительным (после 30 декабря 1899 г.) или отрицательным (до 30 декабря 1899 г.). Это означает, что простое сравнение с плавающей запятой COleDateTime ошибочно сортирует представление 6:00 по 12/29/29/1899 как более поздней , представляющей 7:00 УТРА в тот же день.

Класс COleDateTime обрабатывает даты с 1 января 100 г. по 31 декабря 9999 г. Класс COleDateTime использует григорианский календарь; он не поддерживает даты Джулиана. COleDateTime игнорирует летнее время. (См. раздел Дата и время: поддержка автоматизации.)

Примечание.

Формат можно использовать %y для получения двухзначного года только для дат, начиная с 1900 года. Если вы используете %y формат даты до 1900 года, код создает сбой ASSERT.

Этот тип также используется для представления значений только даты или времени. По соглашению дата 0 (30 декабря 1899 г.) используется только для значений времени, а время 00:00 (полночь) используется для значений только для дат.

Если вы создаете COleDateTime объект с помощью даты менее 100, дата принимается, но последующие вызовы GetYear, GetMonth, GetMinuteGetDayGetHourи сбой и GetSecond возврат -1. Ранее можно использовать двухзначные даты, но даты должны быть 100 или больше в MFC 4.2 и более поздних версиях.

Чтобы избежать проблем, укажите четырехзначную дату. Например:

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

Базовые арифметические операции для COleDateTime значений используют класс компаньона COleDateTimeSpan. COleDateTimeSpan значения определяют интервал времени. Связь между этими классами аналогична связи между CTime и CTimeSpan.

Дополнительные сведения о параметрах COleDateTime и COleDateTimeSpan классах см. в статье "Дата и время: поддержка автоматизации".

Требования

Заголовок: ATLComTime.h

Операторы реляционного времени COleDateTime

Операторы сравнения.

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

Параметры

date
Сравниваемый объект COleDateTime.

Замечания

Примечание.

AtlasSERT будет возникать, если один из двух операндов недопустим.

Примеры

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

Операторы >=, =, ><, будут утверждать, если COleDateTime объект имеет значение NULL.

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

COleDateTime::COleDateTime

Формирует объект 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();

Параметры

dateSrc
Существующий COleDateTime объект, скопированный в новый COleDateTime объект.

varSrc
Существующая VARIANT структура данных (возможно COleVariant , объект), которая будет преобразована в значение даты и времени (VT_DATE) и скопирована в новый COleDateTime объект.

dtSrc
Значение даты и времени (DATE), копируемые в новый COleDateTime объект.

timeSrc
Значение time_t или __time64_t значение, которое необходимо преобразовать в значение даты и времени и скопировано в новый COleDateTime объект.

systimeSrc
SYSTEMTIME Структура, которая будет преобразована в значение даты и времени и скопирована в новый COleDateTime объект.

filetimeSrc
FILETIME Структура, которая будет преобразована в значение даты и времени и скопирована в новый COleDateTime объект. Используется FILETIME универсальное координированное время (UTC), поэтому при передаче локального времени в структуре результаты будут неверными. Дополнительные сведения см. в статье "Время файлов" в пакете SDK для Windows.

nYear, nMonth, nDay, nHour, nMin, nSec
Укажите значения даты и времени для копирования в новый COleDateTime объект.

wDosDate, wDosTime
Значения даты и времени MS-DOS, которые будут преобразованы в значение даты и времени и скопированы в новый COleDateTime объект.

Метка времени
Ссылка на структуру DBTimeStamp , содержащую текущее локальное время.

Замечания

Все эти конструкторы создают новые COleDateTime объекты, инициализированные в указанное значение. В следующей таблице показаны допустимые диапазоны для каждого компонента даты и времени:

Компонент даты и времени Допустимый диапазон
год 100 - 9999
Месяц 0 - 12
дн. 0 - 31
ч 0 - 23
мин 0 - 59
секунда 0 - 59

Обратите внимание, что фактические верхние границы для компонента дня зависят от компонентов месяца и года. Дополнительные сведения см. в функциях-членах или SetDateTime функциях-членахSetDate.

Ниже приведено краткое описание каждого конструктора:

  • COleDateTime() Создает объект, инициализированный COleDateTime до 0 (полночь, 30 декабря 1899 г.).

  • COleDateTime(dateSrc ) COleDateTime Создает объект из существующего COleDateTime объекта.

  • COleDateTime(varSrc ) COleDateTime Создает объект. Пытается преобразовать структуру VARIANT или объект COleVariant в значение даты и времени ( VT_DATE). Если это преобразование выполнено успешно, преобразованное значение копируется в новый COleDateTime объект. Если это не так, для COleDateTime объекта задано значение 0 (полночь, 30 декабря 1899 г.) и его состояние недопустимо.

  • COleDateTime(dtSrc ) COleDateTime Создает объект из DATE значения.

  • COleDateTime(timeSrc ) COleDateTime Создает объект из time_t значения.

  • COleDateTime(systimeSrc ) COleDateTime Создает объект из SYSTEMTIME значения.

  • COleDateTime(filetimeSrc ) COleDateTime Создает объект из FILETIME значения. . Используется FILETIME универсальное координированное время (UTC), поэтому при передаче локального времени в структуре результаты будут неверными. Дополнительные сведения см. в статье "Время файлов" в пакете SDK для Windows.

  • COleDateTime(nYear, nMonth, nDay, nHournMinnSec , ) создает COleDateTime объект из указанных числовых значений.

  • COleDateTime(wDosDate, ) wDosTime COleDateTime Создает объект из указанных значений даты и времени MS-DOS.

Дополнительные сведения о типе time_t данных см . в описании функции времени в справочнике по библиотеке времени выполнения.

Дополнительные сведения см. в структурах SYSTEMTIME и FILETIME в пакете SDK для Windows.

Дополнительные сведения о границах COleDateTime значений см. в статье "Дата и время: поддержка автоматизации".

Примечание.

Конструктор, использующий DBTIMESTAMP параметр, доступен только при включении OLEDB.h.

Пример

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

Создает форматируемое представление значения даты и времени.

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

Параметры

dwFlags
Указывает один из следующих флагов языкового стандарта:

  • LOCALE_NOUSEROVERRIDE Использовать параметры языкового стандарта по умолчанию по умолчанию вместо пользовательских параметров пользователя.

  • VAR_TIMEVALUEONLY Игнорировать часть даты во время синтаксического анализа.

  • VAR_DATEVALUEONLY игнорировать часть времени во время синтаксического анализа.

lcid
Указывает идентификатор языкового стандарта, используемый для преобразования. Дополнительные сведения об идентификаторах языка см. в разделе "Идентификаторы языка".

lpszFormat
Строка форматирования, аналогичная строке printf форматирования. Каждый код форматирования, предшествующий знаку процента ( %), заменяется соответствующим COleDateTime компонентом. Другие символы в строке форматирования копируются без изменений в возвращаемую строку. Дополнительные сведения см. в разделе strftime функции времени выполнения. Значение и смысл кодов форматирования:Format

  • %H Часы в текущий день

  • %M Минуты в текущем часе

  • %S Секунды в текущей минуте

  • %% Знак процента

nFormatID
Идентификатор ресурса для строки элемента управления форматированием.

Возвращаемое значение

Значение CString , содержащее форматируемое значение даты и времени.

Замечания

Если состояние этого COleDateTime объекта равно NULL, возвращаемое значение является пустой строкой. Если состояние недопустимо, возвращаемая строка указывается строковым ресурсом ATL_IDS_DATETIME_INVALID.

Краткое описание трех форм для этой функции выглядит следующим образом:

Format( dwFlags, lcid)
Эта форма форматирует значение с помощью спецификаций языка (идентификаторов языкового стандарта) для даты и времени. Используя параметры по умолчанию, эта форма будет печатать дату и время, если только часть времени не составляет 0 (полночь), в этом случае она будет печатать только дату, или часть даты будет 0 (30 декабря 1899), в этом случае она будет печатать только время. Если значение даты и времени равно 0 (30 декабря 1899 г., полночь), эта форма с параметрами по умолчанию будет выводить полночь.

Format( lpszFormat)
Эта форма форматирует значение с помощью строки форматирования, содержащей специальные коды форматирования, которые предшествуют знаку процента (%) как и в printf. Строка форматирования передается в функцию в качестве параметра. Дополнительные сведения о кодах форматирования см. в strftime , wcsftime в справочнике по библиотеке времени выполнения.

Format( nFormatID)
Эта форма форматирует значение с помощью строки форматирования, содержащей специальные коды форматирования, которые предшествуют знаку процента (%) как и в printf. Строка форматирования — это ресурс. Идентификатор этого строкового ресурса передается в качестве параметра. Дополнительные сведения о кодах форматирования см. в strftime, wcsftime в справочнике по библиотеке времени выполнения.

Пример

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

Вызовите этот метод, чтобы получить время в объекте COleDateTime DBTIMESTAMP в виде структуры данных.

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

Параметры

Метка времени
Ссылка на структуру DBTimeStamp .

Возвращаемое значение

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Замечания

Сохраняет результирующее время в структуре метки времени со ссылкой. Структура DBTIMESTAMP данных, инициализированная этой функцией, будет иметь его fraction член равным нулю.

Пример

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

COleDateTime::GetAsSystemTime

Вызовите этот метод, чтобы получить время в объекте COleDateTime SYSTEMTIME в виде структуры данных.

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

Параметры

sysTime
Ссылка на структуру SYSTEMTIME для получения преобразованного значения даты и времени из COleDateTime объекта.

Возвращаемое значение

Возвращает значение TRUE в случае успешного выполнения; ЗНАЧЕНИЕ FALSE, если преобразование завершается ошибкой, или если COleDateTime объект имеет значение NULL или недопустимый.

Замечания

GetAsSystemTimeсохраняет результирующее время в объекте sysTime, на который ссылается ссылка. Структура SYSTEMTIME данных, инициализированная этой функцией, будет иметь его wMilliseconds член равным нулю.

Дополнительные сведения о состоянии, хранящиеся в объекте COleDateTime , см. в разделе GetStatus.

COleDateTime::GetAsUDATE

Вызовите этот метод, чтобы получить время в объекте COleDateTime UDATE в виде структуры данных.

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

Параметры

uDate
Ссылка на UDATE структуру для получения преобразованного значения даты и времени из COleDateTime объекта.

Возвращаемое значение

Возвращает значение TRUE в случае успешного выполнения; ЗНАЧЕНИЕ FALSE, если преобразование завершается ошибкой, или если COleDateTime объект имеет значение NULL или недопустимый.

Замечания

UDATE Структура представляет дату распаковки.

COleDateTime::GetCurrentTime

Вызовите эту статическую функцию-член, чтобы вернуть текущее значение даты и времени.

static COleDateTime WINAPI GetCurrentTime() throw();

Пример

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

Возвращает день месяца, представленный этим значением даты и времени.

int GetDay() const throw();

Возвращаемое значение

День месяца, представленный значением этого COleDateTime объекта или COleDateTime::error если день не удалось получить.

Замечания

Допустимый диапазон возвращаемых значений от 1 до 31.

Сведения о других функциях-членах, запрашивающих значение этого COleDateTime объекта, см. в следующих функциях-членах:

Пример

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

Возвращает день недели, представленный этим значением даты и времени.

int GetDayOfWeek() const throw();

Возвращаемое значение

День недели, представленный значением этого COleDateTime объекта или COleDateTime::error если день недели не удалось получить.

Замечания

Допустимые значения возвращаемого значения варьируются от 1 до 7, где 1=воскресенье, 2=понедельник и т. д.

Сведения о других функциях-членах, запрашивающих значение этого COleDateTime объекта, см. в следующих функциях-членах:

Пример

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

COleDateTime::GetDayOfYear

Возвращает день года, представленный этим значением даты и времени.

int GetDayOfYear() const throw();

Возвращаемое значение

День года, представленный значением этого COleDateTime объекта или COleDateTime::error если день года не удалось получить.

Замечания

Допустимый диапазон возвращаемых значений от 1 до 366, где 1 января = 1.

Сведения о других функциях-членах, запрашивающих значение этого COleDateTime объекта, см. в следующих функциях-членах:

Пример

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

COleDateTime::GetHour

Возвращает час, представленный этим значением даты и времени.

int GetHour() const throw();

Возвращаемое значение

Час, представленный значением этого COleDateTime объекта или COleDateTime::error если не удалось получить час.

Замечания

Допустимый диапазон возвращаемых значений от 0 до 23.

Сведения о других функциях-членах, запрашивающих значение этого COleDateTime объекта, см. в следующих функциях-членах:

Пример

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

Возвращает минуту, представленную этим значением даты и времени.

int GetMinute() const throw();

Возвращаемое значение

Минута, представленная значением этого COleDateTime объекта или COleDateTime::error если минута не удалось получить.

Замечания

Допустимый диапазон возвращаемых значений от 0 до 59.

Сведения о других функциях-членах, запрашивающих значение этого COleDateTime объекта, см. в следующих функциях-членах:

Пример

См. пример GetHour.

COleDateTime::GetMonth

Возвращает месяц, представленный этим значением даты и времени.

int GetMonth() const throw();

Возвращаемое значение

Месяц, представленный значением этого COleDateTime объекта или COleDateTime::error если месяц не удалось получить.

Замечания

Допустимый диапазон возвращаемых значений от 1 до 12.

Сведения о других функциях-членах, запрашивающих значение этого COleDateTime объекта, см. в следующих функциях-членах:

Пример

См. пример getDay.

COleDateTime::GetSecond

Возвращает секунду, представленную этим значением даты и времени.

int GetSecond() const throw();

Возвращаемое значение

Второй, представленный значением этого COleDateTime объекта или COleDateTime::error если второй не удалось получить.

Замечания

Допустимый диапазон возвращаемых значений от 0 до 59.

Примечание.

Класс COleDateTime не поддерживает секунды прыжка.

Дополнительные сведения о реализации COleDateTimeсм. в статье "Дата и время: поддержка автоматизации".

Сведения о других функциях-членах, запрашивающих значение этого COleDateTime объекта, см. в следующих функциях-членах:

Пример

См. пример GetHour.

COleDateTime::GetStatus

Возвращает состояние (допустимость) заданного COleDateTime объекта.

DateTimeStatus GetStatus() const throw();

Возвращаемое значение

Возвращает состояние этого COleDateTime значения. При вызове GetStatus объекта, созданного COleDateTime с использованием значения по умолчанию, он вернет допустимый. При вызове GetStatus объекта, инициализированного с помощью конструктора, заданного COleDateTime значением NULL, GetStatus возвращается значение NULL.

Замечания

Возвращаемое значение определяется перечисленным типом DateTimeStatus , который определяется в COleDateTime классе.

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

Краткое описание этих значений состояния см. в следующем списке:

  • COleDateTime::error Указывает, что при попытке получить часть значения даты и времени произошла ошибка.

  • COleDateTime::valid Указывает, что этот COleDateTime объект действителен.

  • COleDateTime::invalid Указывает, что этот COleDateTime объект недопустим, то есть его значение может быть неверным.

  • COleDateTime::null Указывает, что этот COleDateTime объект имеет значение NULL, т. е. значение не было предоставлено для этого объекта. (Это значение null в смысле базы данных "отсутствие значения", а не значение C++ NULL.)

Состояние COleDateTime объекта недопустимо в следующих случаях:

  • Если его значение задано из VARIANT значения или COleVariant значения, которое не удалось преобразовать в значение даты и времени.

  • Если его значение задано из time_tзначения , SYSTEMTIMEили FILETIME значение, которое не удалось преобразовать в допустимое значение даты и времени.

  • Если его значение задано с недопустимыми значениями SetDateTime параметров.

  • Если этот объект испытал переполнение или переполнение во время арифметической операции назначения, а именно += или -=.

  • Если этому объекту назначено недопустимое значение.

  • Если состояние этого объекта было явно задано как недопустимое использование SetStatus.

Дополнительные сведения об операциях, которые могут задать состояние недопустимым, см. в следующих функциях-членах:

Дополнительные сведения о границах COleDateTime значений см. в статье "Дата и время: поддержка автоматизации".

Пример

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

Возвращает год, представленный этим значением даты и времени.

int GetYear() const throw();

Возвращаемое значение

Год, представленный значением этого COleDateTime объекта или COleDateTime::error если год не удалось получить.

Замечания

Допустимые значения возвращаемого значения варьируются от 100 до 9999, включая век.

Сведения о других функциях-членах, запрашивающих значение этого COleDateTime объекта, см. в следующих функциях-членах:

Дополнительные сведения о границах COleDateTime значений см. в статье "Дата и время: поддержка автоматизации".

Пример

См. пример getDay.

COleDateTime::m_dt

Базовая DATE структура для этого COleDateTime объекта.

DATE m_dt;

Замечания

Внимание

Изменение значения объекта DATE , к которым обращается указатель, возвращаемый этой функцией, изменит значение этого COleDateTime объекта. Он не изменяет состояние этого COleDateTime объекта.

Дополнительные сведения о реализации DATE объекта см. в статье "Дата и время: поддержка автоматизации".

COleDateTime::m_status

Содержит состояние этого COleDateTime объекта.

DateTimeStatus m_status;

Замечания

Тип этого элемента данных — это перечислимый тип DateTimeStatus, который определяется в COleDateTime классе. Дополнительные сведения см. в разделе COleDateTime::GetStatus.

Внимание

Этот элемент данных предназначен для сложных ситуаций программирования. Вы должны использовать встроенные функции-члены GetStatus и SetStatus. Дополнительные SetStatus предупреждения см. в отношении явного задания этого элемента данных.

COleDateTime::operator =

Копирует 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();

Замечания

Эти перегруженные операторы назначения копируют исходное значение даты и времени в этот COleDateTime объект. Краткое описание каждого из этих перегруженных операторов назначения следует:

  • оператор =( dateSrc ) Значение и состояние операнда копируются в этот COleDateTime объект.

  • оператор =( varSrc) Если преобразование значения VARIANT (или объекта COleVariant) в дату и время (VT_DATE) успешно выполнено, преобразованное значение копируется в этот COleDateTime объект, а его состояние имеет допустимое значение. Если преобразование не выполнено, значение этого объекта равно нулю (30 декабря 1899 года, полуночи) и его статус недопустимому.

  • оператор =( dtSrc ) Значение DATE копируется в этот COleDateTime объект, а его состояние имеет допустимое значение.

  • оператор =( timeSrc ) time_t __time64_t Преобразуется или значение преобразуется и копируется в этот COleDateTime объект. Если преобразование выполнено успешно, то для этого объекта задано допустимое состояние; Если ошибка не выполнена, установлено недопустимое значение.

  • оператор =( systimeSrc)значение SYSTEMTIME преобразуется и копируется в этот COleDateTime объект. Если преобразование выполнено успешно, то для этого объекта задано допустимое состояние; Если ошибка не выполнена, установлено недопустимое значение.

  • оператор =( uDate ) UDATE Значение преобразуется и копируется в этот COleDateTime объект. Если преобразование выполнено успешно, то для этого объекта задано допустимое состояние; Если ошибка не выполнена, установлено недопустимое значение. UDATE Структура представляет дату распаковки. Дополнительные сведения см. в разделе функции VarDateFromUdate.

  • оператор =( filetimeSrc ) Значение FILETIME преобразуется и копируется в этот COleDateTime объект. Если преобразование выполнено успешно, то для этого объекта задано допустимое состояние; в противном случае для него задано недопустимое значение. FILETIME использует универсальное координированное время (UTC), поэтому при передаче времени в формате UTC в структуре результаты будут преобразованы из времени UTC в местное время и будут храниться в качестве варианта. Это поведение аналогично visual C++ 6.0 и Visual C++.NET 2003 с пакетом обновления 2 (SP2). Дополнительные сведения см. в статье "Время файлов" в пакете SDK для Windows.

Дополнительные сведения см . в записи VARIANT в пакете SDK для Windows.

Дополнительные сведения о типе time_t данных см . в описании функции времени в справочнике по библиотеке времени выполнения.

Дополнительные сведения см. в структурах SYSTEMTIME и FILETIME в пакете SDK для Windows.

Дополнительные сведения о границах COleDateTime значений см. в статье "Дата и время: поддержка автоматизации".

COleDateTime::operator +, -

Добавление и вычитание ColeDateTime значений.

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

Замечания

COleDateTime объекты представляют абсолютное время. Объекты COleDateTimeSpan представляют относительные времена. Первые два оператора позволяют добавлять и вычитать COleDateTimeSpan значение из COleDateTime значения. Третий оператор позволяет вычитать одно COleDateTime значение из другого COleDateTimeSpan для получения значения.

Если любой из операндов имеет значение NULL, состояние результирующего COleDateTime значения равно NULL.

Если результирующее COleDateTime значение выходит за пределы допустимых значений, состояние этого COleDateTime значения недопустимо.

Если один из операндов недопустим, а другой не имеет значения NULL, состояние результирующего COleDateTime значения недопустимо.

- Операторы + будут утверждать, если COleDateTime объект имеет значение NULL. См . пример реляционных операторов COleDateTime.

Дополнительные сведения о допустимых, недопустимых и пустых значениях состояния см. в переменной m_status члена.

Дополнительные сведения о границах COleDateTime значений см. в статье "Дата и время: поддержка автоматизации".

Пример

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

Добавьте и вычитает ColeDateTime значение из этого COleDateTime объекта.

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

Замечания

Эти операторы позволяют добавлять и вычитать COleDateTimeSpan значение и из этого COleDateTime. Если любой из операндов имеет значение NULL, состояние результирующего COleDateTime значения равно NULL.

Если результирующее COleDateTime значение выходит за пределы допустимых значений, то для этого COleDateTime значения задано недопустимое состояние.

Если один из операндов недопустим, а другой не имеет значения NULL, состояние результирующего COleDateTime значения недопустимо.

Дополнительные сведения о допустимых, недопустимых и пустых значениях состояния см. в переменной m_status члена.

-= Операторы += будут утверждать, если COleDateTime объект имеет значение NULL. См . пример реляционных операторов COleDateTime.

Дополнительные сведения о границах COleDateTime значений см. в статье "Дата и время: поддержка автоматизации".

COleDateTime::operator DATE

ColeDateTime Преобразует значение в DATE.

operator DATE() const throw();

Замечания

Этот оператор возвращает DATE объект, значение которого копируется из этого COleDateTime объекта. Дополнительные сведения о реализации DATE объекта см. в статье "Дата и время: поддержка автоматизации".

Оператор DATE будет утверждать, если COleDateTime объект имеет значение NULL. См . пример реляционных операторов COleDateTime.

COleDateTime::P arseDateTime

Анализирует строку для чтения значения даты и времени.

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

Параметры

lpszDate
Указатель на строку, завершающуюся значением NULL, которая должна быть проанализирована. Дополнительные сведения см. в разделе "Заметки".

dwFlags
Указывает флаги для параметров языкового стандарта и синтаксического анализа. Один или несколько следующих флагов:

  • LOCALE_NOUSEROVERRIDE Использовать параметры языкового стандарта по умолчанию по умолчанию, а не пользовательские параметры пользователя.

  • VAR_TIMEVALUEONLY Игнорировать часть даты во время синтаксического анализа.

  • VAR_DATEVALUEONLY игнорировать часть времени во время синтаксического анализа.

lcid
Указывает идентификатор языкового стандарта, используемый для преобразования.

Возвращаемое значение

Возвращает значение TRUE, если строка была успешно преобразована в значение даты и времени, в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Если строка была успешно преобразована в значение даты и времени, для этого COleDateTime объекта задано значение и его состояние.

Примечание.

Значения года должны находиться в диапазоне от 100 до 9999, включительно.

Параметр lpszDate может принимать различные форматы. Например, следующие строки содержат допустимые форматы даты и времени:

"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

Идентификатор языкового стандарта также влияет на допустимость формата строки для преобразования в значение даты и времени.

В случае VAR_DATEVALUEONLY значение времени имеет значение 0 или полуночи. В случае VAR_TIMEVALUEONLY значение даты имеет значение 0, то есть 30 декабря 1899 года.

Если строка не может быть преобразована в значение даты и времени или если было числовое переполнение, состояние этого COleDateTime объекта недопустимо.

Дополнительные сведения о границах и реализации COleDateTime значений см. в статье "Дата и время: поддержка автоматизации".

COleDateTime::SetDate

Задает дату этого COleDateTime объекта.

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

Параметры

nYear
Указывает год копирования в этот COleDateTime объект.

nMonth
Указывает месяц для копирования в этот COleDateTime объект.

nDay
Указывает день копирования в этот COleDateTime объект.

Возвращаемое значение

Ноль, если значение этого COleDateTime объекта было установлено успешно; в противном случае — значение 1. Это возвращаемое значение основано на перечисленном типе DateTimeStatus . Дополнительные сведения см. в функции-члене SetStatus .

Замечания

Дата задана для указанных значений. Время установлено на 0, полуночи.

См. следующую таблицу с ограничениями для значений параметров:

Параметр Bounds
nYear 100 - 9999
nMonth 1 - 12
nDay 0 - 31

Если день переполнения месяца, он преобразуется в правильный день следующего месяца, а месяц и /или год увеличивается соответствующим образом. Значение дня нуля указывает последний день предыдущего месяца. Поведение совпадает с SystemTimeToVariantTimeповедением.

Если значение даты, указанное параметрами, недопустимо, то для этого объекта задано COleDateTime::invalidсостояние. Вы должны использовать GetStatus для проверки допустимости DATE значения и не должны предполагать, что значение m_dt останется неизмененным.

Ниже приведены некоторые примеры значений даты:

nYear nMonth nDay Значение
2000 2 29 29 февраля 2000 г.
1776 7 4 4 июля 1776 г.
1925 4 35 35 апреля 1925 (недопустимая дата)
10000 1 1 1 января 10000 г. (недопустимая дата)

Сведения о настройке даты и времени см. в разделе COleDateTime::SetDateTime.

Сведения о функциях-членах, запрашивающих значение этого COleDateTime объекта, см. в следующих функциях-членах:

Дополнительные сведения о границах COleDateTime значений см. в статье "Дата и время: поддержка автоматизации".

Пример

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

Задает дату и время этого COleDateTime объекта.

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

Параметры

nYear, nMonth, nDay, nHour, nMin, nSec
Укажите компоненты даты и времени, скопированные в этот COleDateTime объект.

Возвращаемое значение

Ноль, если значение этого COleDateTime объекта было установлено успешно; в противном случае — значение 1. Это возвращаемое значение основано на перечисленном типе DateTimeStatus . Дополнительные сведения см. в функции-члене SetStatus .

Замечания

См. следующую таблицу с ограничениями для значений параметров:

Параметр Bounds
nYear 100 - 9999
nMonth 1 - 12
nDay 0 - 31
nHour 0 - 23
nMin 0 - 59
nSec 0 - 59

Если день переполнения месяца, он преобразуется в правильный день следующего месяца, а месяц и /или год увеличивается соответствующим образом. Значение дня нуля указывает последний день предыдущего месяца. Поведение совпадает с SystemTimeToVariantTime.

Если значение даты или времени, указанное параметрами, недопустимо, то состояние этого объекта является недопустимым, а значение этого объекта не изменяется.

Ниже приведены некоторые примеры значений времени:

nHour nMin nSec Значение
1 3 3 01:03:03
23 45 0 23:45:00
25 30 0 Недопустимо
9 60 0 Недопустимо

Ниже приведены некоторые примеры значений даты:

nYear nMonth nDay Значение
1995 4 15 15 апреля 1995 г.
1789 7 14 17 июля 1789 г.
1925 2 30 Недопустимо
10000 1 1 Недопустимо

Чтобы задать только дату, см. раздел COleDateTime::SetDate. Чтобы задать только время, см. раздел COleDateTime::SetTime.

Сведения о функциях-членах, запрашивающих значение этого COleDateTime объекта, см. в следующих функциях-членах:

Дополнительные сведения о границах COleDateTime значений см. в статье "Дата и время: поддержка автоматизации".

Пример

См. пример GetStatus.

COleDateTime::SetStatus

Задает состояние этого COleDateTime объекта.

void SetStatus(DateTimeStatus status) throw();

Параметры

состояние
Новое значение состояния для этого COleDateTime объекта.

Замечания

Значение параметра состояния определяется перечисленным типомDateTimeStatus, который определяется в COleDateTime классе. Дополнительные сведения см. в разделе COleDateTime::GetStatus .

Внимание

Эта функция предназначена для сложных ситуаций программирования. Эта функция не изменяет данные в этом объекте. Чаще всего оно используется для задания состояния null или недопустимого. Оператор назначения (оператор =) и SetDateTime задают состояние объекта на основе исходных значений.

Пример

См. пример GetStatus.

COleDateTime::SetTime

Задает время этого COleDateTime объекта.

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

Параметры

nHour, nMin, nSec
Укажите компоненты времени для копирования в этот COleDateTime объект.

Возвращаемое значение

Ноль, если значение этого COleDateTime объекта было установлено успешно; в противном случае — значение 1. Это возвращаемое значение основано на перечисленном типе DateTimeStatus . Дополнительные сведения см. в функции-члене SetStatus .

Замечания

Время задается указанными значениями. Дата установлена на дату 0, то есть 30 декабря 1899 года.

См. следующую таблицу с ограничениями для значений параметров:

Параметр Bounds
nHour 0 - 23
nMin 0 - 59
nSec 0 - 59

Если значение времени, указанное параметрами, недопустимо, состояние этого объекта имеет недопустимое значение, а значение этого объекта не изменяется.

Ниже приведены некоторые примеры значений времени:

nHour nMin nSec Значение
1 3 3 01:03:03
23 45 0 23:45:00
25 30 0 Недопустимо
9 60 0 Недопустимо

Сведения о настройке даты и времени см. в разделе COleDateTime::SetDateTime.

Сведения о функциях-членах, запрашивающих значение этого COleDateTime объекта, см. в следующих функциях-членах:

Дополнительные сведения о границах COleDateTime значений см. в статье "Дата и время: поддержка автоматизации".

Пример

См. пример SetDate.

См. также

Класс COleVariant
Класс CTime
Класс CTimeSpan
Диаграмма иерархии
Общие классы ATL/MFC