Класс 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
, GetMinute
GetDay
GetHour
и сбой и 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
,nHour
nMin
nSec
, ) создает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