Класс COleDateTimeSpan

Представляет относительное время, интервал времени.

Синтаксис

class COleDateTimeSpan

Участники

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

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

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

Имя Описание
COleDateTimeSpan::Format Создает форматируемое строковое представление COleDateTimeSpan объекта.
COleDateTimeSpan::GetDays Возвращает часть дня диапазона этого COleDateTimeSpan объекта.
COleDateTimeSpan::GetHours Возвращает часовую часть диапазона этого COleDateTimeSpan объекта.
COleDateTimeSpan::GetMinutes Возвращает минутную часть диапазона этого COleDateTimeSpan объекта.
COleDateTimeSpan::GetSeconds Возвращает вторую часть диапазона этого COleDateTimeSpan объекта.
COleDateTimeSpan::GetStatus Возвращает состояние (допустимость) этого COleDateTimeSpan объекта.
COleDateTimeSpan::GetTotalDays Возвращает число дней, которое представляет этот COleDateTimeSpan объект.
COleDateTimeSpan::GetTotalHours Возвращает количество часов, которое представляет этот COleDateTimeSpan объект.
COleDateTimeSpan::GetTotalMinutes Возвращает количество минут, которое представляет этот COleDateTimeSpan объект.
COleDateTimeSpan::GetTotalSeconds Возвращает количество секунд, которое представляет этот COleDateTimeSpan объект.
COleDateTimeSpan::SetDateTimeSpan Задает значение этого COleDateTimeSpan объекта.
COleDateTimeSpan::SetStatus Задает состояние (допустимость) этого COleDateTimeSpan объекта.

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

Имя Описание
оператор +, - Добавление, вычитание и изменение знака для COleDateTimeSpan значений.
оператор +=, -= Добавьте и вычитает COleDateTimeSpan значение из этого COleDateTimeSpan значения.
оператор = Копирует COleDateTimeSpan значение.
оператор ==, <, <= Сравните два COleDateTimeSpan значения.
оператор double Преобразует это COleDateTimeSpan значение в doubleзначение .

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

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

Замечания

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

Время COleDateTimeSpan в днях.

COleDateTimeSpan используется со своим вспомогательным классом COleDateTime. COleDateTime инкапсулирует DATE тип данных автоматизации OLE. COleDateTime представляет абсолютные значения времени. Все COleDateTime вычисления включают COleDateTimeSpan значения. Отношение между этими классами аналогично тому, что между CTime и CTimeSpan.

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

Требования

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

Реляционные операторы COleDateTimeSpan

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

bool operator==(const COleDateTimeSpan& dateSpan) const throw();
bool operator!=(const COleDateTimeSpan& dateSpan) const throw();
bool operator<(const COleDateTimeSpan& dateSpan) const throw();
bool operator>(const COleDateTimeSpan& dateSpan) const throw();
bool operator<=(const COleDateTimeSpan& dateSpan) const throw();
bool operator>=(const COleDateTimeSpan& dateSpan) const throw();

Параметры

dateSpan
Объект COleDateTimeSpan для сравнения.

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

Эти операторы сравнивают два значения даты и времени и возвращают значение TRUE, если условие имеет значение true; в противном случае ЗНАЧЕНИЕ FALSE.

Замечания

Примечание.

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

Пример

COleDateTimeSpan spanOne(3, 12, 0, 0); // 3 days and 12 hours
COleDateTimeSpan spanTwo(spanOne);     // 3 days and 12 hours
BOOL b;
b = spanOne == spanTwo;                // TRUE
b = spanOne < spanTwo;                 // FALSE, same value
b = spanOne > spanTwo;                 // FALSE, same value
b = spanOne <= spanTwo;                // TRUE, same value
b = spanOne >= spanTwo;                // TRUE, same value   

spanTwo.SetStatus(COleDateTimeSpan::invalid);
b = spanOne == spanTwo;                // FALSE, different status
b = spanOne != spanTwo;                // TRUE, different status

 

COleDateTimeSpan ts1(100.0);   // one hundred days
COleDateTimeSpan ts2(110.0);   // ten more days

ASSERT((ts1 != ts2) && (ts1 < ts2) && (ts1 <= ts2));   

COleDateTimeSpan::COleDateTimeSpan

Формирует объект COleDateTimeSpan.

COleDateTimeSpan() throw();
COleDateTimeSpan(double dblSpanSrc) throw();
COleDateTimeSpan(LONG lDays, int nHours, int nMins, int nSecs) throw();

Параметры

dblSpanSrc
Количество дней, которые необходимо скопировать в новый COleDateTimeSpan объект.

lDays, nHours, nMins, nSecs
Укажите значения дня и времени для копирования в новый COleDateTimeSpan объект.

Замечания

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

  • COleDateTimeSpan( ) создает объект, инициализированный COleDateTimeSpan до 0.

  • COleDateTimeSpan(dblSpanSrc) создает COleDateTimeSpan объект из значения с плавающей запятой.

  • COleDateTimeSpan(lDays,nHours,nMinsnSecs) создает объект, инициализированный COleDateTimeSpan указанным числовым значениям.

Для нового COleDateTimeSpan объекта задано допустимое состояние.

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

Пример

COleDateTimeSpan spanOne(2.75);          // 2 days and 18 hours
COleDateTimeSpan spanTwo(2, 18, 0, 0);   // 2 days and 18 hours
COleDateTimeSpan spanThree(3, -6, 0, 0); // 2 days and 18 hours

COleDateTimeSpan ts1;               // Uninitialized time value
COleDateTimeSpan ts2a(ts1);         // Copy constructor
COleDateTimeSpan ts2b = ts1;         // Copy constructor again
COleDateTimeSpan ts3(100.0);          // 100 days
COleDateTimeSpan ts4(0, 1, 5, 12);   // 1 hour, 5 minutes, and 12 seconds

COleDateTimeSpan::Format

Создает форматируемое строковое представление COleDateTimeSpan объекта.

CString Format(LPCTSTR pFormat) const;
CString Format(UINT nID) const;

Параметры

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

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

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

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

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

Четыре указанных выше кодов формата — это только коды, которые будут принимать формат.

-

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

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

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

Замечания

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

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

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

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

Пример

// get the current time
COleDateTime tmStart = COleDateTime::GetCurrentTime();

// waste some time
CString str;
::Sleep(3000);

// get the current time again
COleDateTime tmFinish = COleDateTime::GetCurrentTime();

// find the difference
COleDateTimeSpan tmSpan = tmFinish - tmStart;

// tell the user
str = tmSpan.Format(_T("%S seconds elapsed"));
_tprintf_s(_T("%s\n"), (LPCTSTR) str);

COleDateTimeSpan::GetDays

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

LONG GetDays() const throw();

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

Часть дня этого значения даты и времени.

Замечания

Возвращаемые значения из этого диапазона функций от приблизительно до 3615 000 и 3615 000.

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

Пример

COleDateTimeSpan ts(3, 1, 5, 12); // 3 days, 1 hour, 5 min, and 12 sec
ASSERT(ts.GetDays() == 3);   

COleDateTimeSpan::GetHours

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

LONG GetHours() const throw();

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

Часть часов этого значения даты и времени.

Замечания

Возвращаемые значения из этого диапазона функции — от 23 до 23.

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

Пример

COleDateTimeSpan ts(3, 1, 5, 12); // 3 days, 1 hour, 5 min, and 12 sec
ASSERT(ts.GetHours() == 1);

COleDateTimeSpan::GetMinutes

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

LONG GetMinutes() const throw();

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

Часть минут этого значения даты и времени.

Замечания

Возвращаемые значения из этого диапазона функций от – 59 до 59.

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

Пример

COleDateTimeSpan ts(3, 1, 5, 12); // 3 days, 1 hour, 5 min, and 12 sec
ASSERT(ts.GetMinutes() == 5);   

COleDateTimeSpan::GetSeconds

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

LONG GetSeconds() const throw();

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

Часть секунд этого значения даты и времени.

Замечания

Возвращаемые значения из этого диапазона функций от – 59 до 59.

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

Пример

COleDateTimeSpan ts(3, 1, 5, 12); // 3 days, 1 hour, 5 min, and 12 sec
ASSERT(ts.GetSeconds() == 12);   

COleDateTimeSpan::GetStatus

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

DateTimeSpanStatus GetStatus() const throw();

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

Состояние этого COleDateTimeSpan значения.

Замечания

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

enum DateTimeSpanStatus{
   valid = 0,
   invalid = 1,
   null = 2,
};

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

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

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

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

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

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

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

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

Дополнительные сведения об операциях, которые могут задать недопустимое состояние, см. в разделе COleDateTimeSpan::operator +, - и COleDateTimeSpan::operator +=, -=.

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

COleDateTimeSpan::GetTotalDays

Извлекает это значение даты и времени, выраженное в днях.

double GetTotalDays() const throw();

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

Это значение даты и времени, выраженное в днях. Хотя эта функция прототипируется для возврата двойника, она всегда возвращает целочисленное значение.

Замечания

Возвращаемые значения из этого диапазона функций примерно от 3,65e6 до 3,65e6.

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

Пример

COleDateTimeSpan ts(3, 1, 5, 12); // 3 days, 1 hour, 5 min, and 12 sec
ASSERT(ts.GetTotalDays() == 3);
ASSERT(ts.GetTotalHours() == 73);
ASSERT(ts.GetTotalMinutes() == 4385);
ASSERT(ts.GetTotalSeconds() == 263112);   

COleDateTimeSpan::GetTotalHours

Извлекает это значение даты и времени, выраженное в часах.

double GetTotalHours() const throw();

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

Это значение даты и времени, выраженное в часах. Хотя эта функция прототипируется для возврата двойника, она всегда возвращает целочисленное значение.

Замечания

Возвращаемые значения из этого диапазона функций от приблизительно до 8,77e7 и 8,77e7.

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

Пример

См. пример getTotalDays.

COleDateTimeSpan::GetTotalMinutes

Извлекает это значение даты и времени, выраженное в минутах.

double GetTotalMinutes() const throw();

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

Это значение даты и времени, выраженное в минутах. Хотя эта функция прототипируется для возврата двойника, она всегда возвращает целочисленное значение.

Замечания

Возвращаемые значения из этого диапазона функций между приблизительно 5,26e9 и 5,26e9.

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

Пример

См. пример getTotalDays.

COleDateTimeSpan::GetTotalSeconds

Извлекает это значение даты и времени, выраженное в секундах.

double GetTotalSeconds() const throw();

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

Это значение даты и времени, выраженное в секундах. Хотя эта функция прототипируется для возврата двойника, она всегда возвращает целочисленное значение.

Замечания

Возвращаемые значения из этого диапазона функций варьируются примерно от 3.16e11 до 3.16e11.

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

Пример

См. пример getTotalDays.

COleDateTimeSpan::m_span

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

double m_span;

Замечания

Это значение выражает интервал даты и времени в днях.

Внимание

Изменение значения в элементе double данных изменит значение этого COleDateTimeSpan объекта. Он не изменяет состояние этого COleDateTimeSpan объекта.

COleDateTimeSpan::m_status

Тип для этого элемента данных — это перечислимый тип DateTimeSpanStatus, который определяется в COleDateTimeSpan классе.

DateTimeSpanStatus m_status;

Замечания

enum DateTimeSpanStatus{
   valid = 0,
   invalid = 1,
   null = 2,
   };

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

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

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

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

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

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

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

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

Дополнительные сведения об операциях, которые могут задать недопустимое состояние, см. в разделе COleDateTimeSpan::operator +, - и COleDateTimeSpan::operator +=, -=.

Внимание

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

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

COleDateTimeSpan::operator =

Копирует COleDateTimeSpan значение.

COleDateTimeSpan& operator=(double dblSpanSrc) throw();

Замечания

Этот перегруженный оператор назначения копирует исходное значение даты и времени в этот COleDateTimeSpan объект.

COleDateTimeSpan::operator +, -

Добавление, вычитание и изменение знака для COleDateTimeSpan значений.

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

Замечания

Первые два оператора позволяют добавлять и вычитать значения даты и времени. Третий позволяет изменить знак значения даты и времени.

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

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

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

Пример

COleDateTimeSpan ts1(3, 1, 5, 12); // 3 days, 1 hour, 5 min, and 12 sec
COleDateTimeSpan ts2(100.0 / (24 * 3600.0)); // 100 seconds
COleDateTimeSpan ts3 = ts1 + ts2;
ASSERT(ts3.GetSeconds() == 52); // 6 mins, 52 secs   

COleDateTimeSpan::operator +=, -=

Добавьте и вычитает COleDateTimeSpan значение из этого COleDateTimeSpan значения.

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

Замечания

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

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

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

Пример

COleDateTimeSpan ts1(10.0); // 10 days
COleDateTimeSpan ts2(100.0); // 100 days
ts2 -= ts1;
ASSERT(ts2.GetTotalDays() == 90);   

COleDateTimeSpan::operator double

Преобразует это COleDateTimeSpan значение в doubleзначение .

operator double() const throw();

Замечания

Этот оператор возвращает значение этого COleDateTimeSpan значения в виде числа дней с плавающей запятой.

COleDateTimeSpan::SetDateTimeSpan

Задает значение этого значения даты и времени.

void SetDateTimeSpan(LONG lDays, int nHours, int nMins, int nSecs) throw();

Параметры

lDays, nHours, nMins, nSecs
Укажите значения даты и интервала времени, скопированные в этот COleDateTimeSpan объект.

Замечания

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

Пример

COleDateTimeSpan spanOne;
COleDateTimeSpan spanTwo;
spanOne.SetDateTimeSpan(0, 2, 45, 0);  // 2 hours and 45 seconds
spanTwo.SetDateTimeSpan(0, 3, -15, 0); // 2 hours and 45 seconds   

COleDateTimeSpan::SetStatus

Задает состояние (допустимость) этого COleDateTimeSpan объекта.

void SetStatus(DateTimeSpanStatus status) throw();

Параметры

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

Замечания

Значение параметра Status определяется перечисленным типомDateTimeSpanStatus, который определяется в COleDateTimeSpan классе.

enum DateTimeSpanStatus{
   valid = 0,
   invalid = 1,
   null = 2,
   };

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

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

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

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

    Внимание

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

Пример

// if the person is not still in school, set days to graduation to null
if (!m_bStillInSchool || m_dtDateOfGraduation.GetStatus() == COleDateTime::null)
   m_dtsDaysToGraduation.SetStatus(COleDateTimeSpan::null);   

См. также

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