Класс CTime
Представляет абсолютное время и дату.
Синтаксис
class CTime
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CTime::CTime | CTime Создает объекты различными способами. |
Открытые методы
Имя | Описание |
---|---|
CTime::Format | CTime Преобразует объект в форматированную строку на основе локального часового пояса. |
CTime::FormatGmt | CTime Преобразует объект в форматированную строку на основе UTC. |
CTime::GetAsDBTIMESTAMP | Преобразует сведения о времени, хранящиеся в объекте CTime , в структуру DBTIMESTAMP, совместимую с Win32. |
CTime::GetAsSystemTime | Преобразует сведения о времени, хранящиеся в объектеCTime , в структуру SYSTEMTIME, совместимую с Win32. |
CTime::GetCurrentTime | Создает объект, представляющий текущее CTime время (статическую функцию-член). |
CTime::GetDay | Возвращает день, представленный CTime объектом. |
CTime::GetDayOfWeek | Возвращает день недели, CTime представленный объектом. |
CTime::GetGmtTm | Разбивает объект на CTime компоненты на основе UTC. |
CTime::GetHour | Возвращает час, представленный CTime объектом. |
CTime::GetLocalTm | Разбивает CTime объект на компоненты на основе локального часового пояса. |
CTime::GetMinute | Возвращает минуту, представленную CTime объектом. |
CTime::GetMonth | Возвращает месяц, представленный CTime объектом. |
CTime::GetSecond | Возвращает второй, представленный CTime объектом. |
CTime::GetTime | Возвращает значение __time64_t для данного CTime объекта. |
CTime::GetYear | Возвращает год, представленный CTime объектом. |
CTime::Serialize64 | Сериализует данные в архив или из архива. |
Операторы
Имя | Описание |
---|---|
оператор + - | Эти операторы добавляют и вычитают и CTime вычитают CTimeSpan объекты. |
оператор +=, -= | Эти операторы добавляют и вычитают CTimeSpan объект в объект и из этого CTime объекта. |
оператор = | Оператор присваивания . |
оператор ==, < и т. д. | Операторы сравнения. |
Замечания
CTime
не имеет базового класса.
CTime
значения основаны на согласованном универсальном времени (UTC), эквивалентном координированному универсальному времени (среднее время Гринвича, GMT). Сведения о том, как определяется часовой пояс, см. в разделе "Управление временем".
При создании CTime
объекта задайте nDST
для параметра значение 0, чтобы указать, что стандартное время действует, или значение, превышающее 0, чтобы указать, что летнее время действует, или значение меньше нуля, чтобы код библиотеки времени выполнения C вычислял, имеет ли значение стандартное время или летнее время. tm_isdst
— это обязательное поле. Если значение не задано, его значение не определено, а возвращаемое значение из mktime непредсказуемо. Если timeptr
указывает на структуру tm, возвращаемую предыдущим вызовом asctime_s, _gmtime_s или localtime_s, tm_isdst
поле содержит правильное значение.
Класс-компаньон CTimeSpan представляет интервал времени.
CTimeSpan
Классы CTime
не предназначены для производных. Поскольку виртуальных функций нет, размер CTime
объектов CTimeSpan
составляет ровно 8 байт. Большинство функций-членов являются встроенными.
Примечание.
Верхний предел даты — 12.31.3000. Меньшее ограничение — 1.1.1.1970 12:00:00 AM GMT.
Дополнительные сведения об использовании CTime
см. в статьях " Дата и время" и "Управление временем" в справочнике по библиотеке времени выполнения.
Примечание.
Структура CTime
изменилась с MFC 7.1 на MFC 8.0. Если вы сериализуете CTime
структуру с помощью оператора << в MFC 8.0 или более поздней версии, результирующий файл не будет читаемым в более ранних версиях MFC.
Требования
Заголовок: atltime.h
Операторы сравнения CTime
Операторы сравнения.
bool operator==(CTime time) const throw();
bool operator!=(CTime time) const throw();
bool operator<(CTime time) const throw();
bool operator>(CTime time) const throw();
bool operator<=(CTime time) const throw();
bool operator>=(CTime time) const throw();
Параметры
time
Сравниваемый объект CTime
.
Возвращаемое значение
Эти операторы сравнивают два абсолютных времени и возвращают значение TRUE, если условие имеет значение true; в противном случае ЗНАЧЕНИЕ FALSE.
Пример
CTime t1 = CTime::GetCurrentTime();
CTime t2 = t1 + CTimeSpan(0, 1, 0, 0); // 1 hour later
ATLASSERT(t1 != t2);
ATLASSERT(t1 < t2);
ATLASSERT(t1 <= t2);
CTime::CTime
Создает новый CTime
объект, инициализированный с заданным временем.
CTime() throw();
CTime(__time64_t time) throw();
CTime(int nYear, int nMonth, int nDay,
int nHour, int nMin, int nSec, int nDST = -1);
CTime(WORD wDosDate, WORD wDosTime, int nDST = -1);
CTime(const SYSTEMTIME& st, int nDST = - 1) throw();
CTime(const FILETIME& ft, int nDST = - 1);
CTime(const DBTIMESTAMP& dbts, int nDST = -1) throw();
Параметры
timeSrc
Указывает CTime
объект, который уже существует.
time
__time64_t
Значение времени, которое является числом секунд после 1 января 1970 года UTC. Обратите внимание, что это изменится на ваше локальное время. Например, если вы находитесь в Нью-йорке и создадите CTime
объект, передав параметр 0, CTime::GetMonth вернет 12.
nYear, nMonth, nDay, nHour, nMin, nSec
Указывает значения даты и времени, скопированные в новый CTime
объект.
nDST
Указывает, действует ли летнее время. Может иметь одно из трех значений:
значение nDST , равное 0Standard time, действует.
значение nDST , равное значению, больше 0Daylight сберегательное время, действует.
значение nDST , равное значению меньше 0The по умолчанию. Автоматически вычисляет, действует ли стандартное время или летнее время.
wDosDate, wDosTime
Значения даты и времени MS-DOS, которые будут преобразованы в значение даты и времени и скопированы в новый CTime
объект.
ул
Структура SYSTEMTIME, которая будет преобразована в значение даты и времени и скопирована в новый CTime
объект.
фут
Структура FILETIME, которая будет преобразована в значение даты и времени и скопирована в новый CTime
объект.
dbts
Ссылка на структуру DBTIMESTAMP, содержащую текущее локальное время.
Замечания
Каждый конструктор описан ниже:
CTime();
Создает неинициализированныйCTime
объект. Этот конструктор позволяет определитьCTime
массивы объектов. Перед использованием следует инициализировать такие массивы с допустимым временем.CTime( const CTime& );
Создает объект из другогоCTime
CTime
значения.CTime( __time64_t );
CTime
Создает объект из типа __time64_t. Этот конструктор ожидает время в формате UTC и преобразует результат в локальное время перед сохранением результата.CTime( int, int, ...);
CTime
Создает объект из компонентов локального времени с каждым компонентом, ограниченным следующими диапазонами:Компонент Диапазон nYear 1970-3000 nMonth 1–12 nDay 1–31 nHour 0-23 nMin 0-59 nSec 0-59 Этот конструктор делает соответствующее преобразование в ФОРМАТЕ UTC. Отладочная версия библиотеки классов Microsoft Foundation утверждает, что один или несколько компонентов времени выходят за пределы диапазона. Перед вызовом необходимо проверить аргументы. Этот конструктор ожидает локального времени.
CTime( WORD, WORD );
CTime
Создает объект из указанных значений даты и времени MS-DOS. Этот конструктор ожидает локального времени.CTime( const SYSTEMTIME& );
CTime
Создает объект изSYSTEMTIME
структуры. Этот конструктор ожидает локального времени.CTime( const FILETIME& );
CTime
Создает объект изFILETIME
структуры. Скорее всего, вы не будете использоватьCTime FILETIME
инициализацию напрямую. Если вы используетеCFile
объект для управления файлом,CFile::GetStatus
извлекает метку времени для файла черезCTime
объект, инициализированный структуройFILETIME
. Этот конструктор предполагает время, основанное на формате UTC, и автоматически преобразует значение в локальное время перед сохранением результата.Примечание.
Конструктор, использующий
DBTIMESTAMP
параметр, доступен только при включении OLEDB.h.
Дополнительные сведения см . в структуре SYSTEMTIME и FILETIME в пакете SDK для Windows. Также см . запись даты и времени MS-DOS в пакете SDK для Windows.
Пример
time_t osBinaryTime; // C run-time time (defined in <time.h>)
time(&osBinaryTime) ; // Get the current time from the
// operating system.
CTime time1; // Empty CTime. (0 is illegal time value.)
CTime time2 = time1; // Copy constructor.
CTime time3(osBinaryTime); // CTime from C run-time time
CTime time4(1999, 3, 19, 22, 15, 0); // 10:15PM March 19, 1999
CTime::Format
Вызовите эту функцию-член, чтобы создать форматируемое представление значения даты и времени.
CString Format(LPCTSTR pszFormat) const;
CString Format(UINT nFormatID) const;
Параметры
pszFormat
Строка форматирования, аналогичная строке printf
форматирования. Коды форматирования, предшествующие знаку процента (%
), заменяются соответствующим CTime
компонентом. Другие символы в строке форматирования копируются без изменений в возвращаемую строку. Список кодов форматирования см. в strftime функции времени выполнения.
nFormatID
Идентификатор строки, определяющей этот формат.
Возвращаемое значение
CString, содержащий форматируемое время.
Замечания
Если состояние этого CTime
объекта равно NULL, возвращаемое значение является пустой строкой.
Этот метод создает исключение, если значение даты и времени для форматирования не может варьироваться от полуночи, 1 января 1970 г. до 31 декабря 3000 г. (UTC).
Пример
CTime t(1999, 3, 19, 22, 15, 0);
// 10:15 PM March 19, 1999
CString s = t.Format(_T("%A, %B %d, %Y"));
ATLASSERT(s == _T("Friday, March 19, 1999"));
CTime::FormatGmt
Создает отформатированную строку, соответствующую этому CTime
объекту.
CString FormatGmt(LPCTSTR pszFormat) const;
CString FormatGmt(UINT nFormatID) const;
Параметры
pszFormat
Задает строку форматирования, аналогичную строке printf
форматирования. Дополнительные сведения см. в strftime функции времени выполнения.
nFormatID
Идентификатор строки, определяющей этот формат.
Возвращаемое значение
CString, содержащий форматируемое время.
Замечания
Значение времени не преобразуется и, таким образом, отражает UTC.
Этот метод создает исключение, если значение даты и времени для форматирования не может варьироваться от полуночи, 1 января 1970 г. до 31 декабря 3000 г. (UTC).
Пример
См. пример CTime ::Format.
CTime::GetAsDBTIMESTAMP
Вызовите эту функцию-член, чтобы преобразовать сведения о времени, хранящиеся в объекте CTime
, в структуру DBTIMESTAMP, совместимую с Win32.
bool GetAsDBTIMESTAMP(DBTIMESTAMP& dbts) const throw();
Параметры
dbts
Ссылка на структуру DBTIMESTAMP, содержащую текущее локальное время.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Сохраняет результирующее время в структуре баз данных, на которые ссылается ссылка. Структура DBTIMESTAMP
данных, инициализированная этой функцией, будет иметь его fraction
член равным нулю.
Пример
CTime t = CTime::GetCurrentTime();
DBTIMESTAMP ts;
t.GetAsDBTIMESTAMP(ts); // Retrieves the time in t into the ts structure
CTime::GetAsSystemTime
Вызовите эту функцию-член, чтобы преобразовать сведения о времени, хранящиеся в объектеCTime
, в структуру SYSTEMTIME, совместимую с Win32.
bool GetAsSystemTime(SYSTEMTIME& st) const throw();
Параметры
TimeDest
Ссылка на структуру SYSTEMTIME , которая будет содержать преобразованное значение CTime
даты и времени объекта.
Возвращаемое значение
Значение TRUE, если успешно; в противном случае — FALSE.
Замечания
GetAsSystemTime
сохраняет результирующее время в указанной структуре timeDest . Структура SYSTEMTIME
данных, инициализированная этой функцией, будет иметь его wMilliseconds
член равным нулю.
Пример
// Convert CTime to FILETIME
CTime time(CTime::GetCurrentTime());
SYSTEMTIME timeDest;
time.GetAsSystemTime(timeDest);
FILETIME fileTime;
::SystemTimeToFileTime(&timeDest, &fileTime);
CTime::GetCurrentTime
CTime
Возвращает объект, представляющий текущее время.
static CTime WINAPI GetCurrentTime() throw();
Замечания
Возвращает текущую системную дату и время в формате UTC.
Пример
CTime t = CTime::GetCurrentTime();
CTime::GetDay
Возвращает день, представленный CTime
объектом.
int GetDay() const throw();
Возвращаемое значение
Возвращает день месяца в зависимости от местного времени в диапазоне от 1 до 31.
Замечания
Вызовы GetLocalTm
этой функции, которая использует внутренний статически выделенный буфер. Данные в этом буфере перезаписываются из-за вызовов других CTime
функций-членов.
Пример
// Example for CTime::GetDay, CTime::GetMonth, and CTime::GetYear
CTime t(1999, 3, 19, 22, 15, 0); // 10:15 PM March 19, 1999
ATLASSERT(t.GetDay() == 19);
ATLASSERT(t.GetMonth() == 3);
ATLASSERT(t.GetYear() == 1999);
CTime::GetDayOfWeek
Возвращает день недели, CTime
представленный объектом.
int GetDayOfWeek() const throw();
Возвращаемое значение
Возвращает день недели на основе местного времени; 1 = воскресенье, 2 = понедельник, до 7 = суббота.
Замечания
Вызовы GetLocalTm
этой функции, которая использует внутренний статически выделенный буфер. Данные в этом буфере перезаписываются из-за вызовов других CTime
функций-членов.
Пример
// Print out the day of the week using localized day name
UINT DayOfWeek[] = {
LOCALE_SDAYNAME7, // Sunday
LOCALE_SDAYNAME1,
LOCALE_SDAYNAME2,
LOCALE_SDAYNAME3,
LOCALE_SDAYNAME4,
LOCALE_SDAYNAME5,
LOCALE_SDAYNAME6 // Saturday
};
TCHAR strWeekday[256];
CTime time(CTime::GetCurrentTime()); // Initialize CTime with current time
::GetLocaleInfo(LOCALE_USER_DEFAULT, // Get string for day of the week from system
DayOfWeek[time.GetDayOfWeek()-1], // Get day of week from CTime
strWeekday, sizeof(strWeekday) / sizeof(strWeekday[0]));
ATLTRACE(_T("%s\n"), strWeekday); // Print out day of the week
CTime::GetGmtTm
Получает структуру tm , содержащую декомпозицию времени, содержащегося в этом CTime
объекте.
struct tm* GetGmtTm(struct tm* ptm) const;
Параметры
ptm
Указывает на буфер, который получит данные времени. Если этот указатель имеет значение NULL, создается исключение.
Возвращаемое значение
Указатель на заполненную структуру tm , как определено в файле INCLUDE TIME.H. См . инструкции gmtime, _gmtime32, _gmtime64 для макета структуры.
Замечания
GetGmtTm
возвращает utc.
PTM не может иметь значение NULL. Если вы хотите вернуться к старому поведению, в котором ptm может иметь значение NULL, чтобы указать, что должен использоваться внутренний статически выделенный буфер, а затем неуправляемый _SECURE_ATL.
Пример
// Compute difference between local time and GMT
CTime time(CTime::GetCurrentTime());
tm t1, t2;
time.GetLocalTm(&t1);
time.GetGmtTm(&t2);
ATLTRACE(_T("Difference between local time and GMT is %d hours.\n"),
t1.tm_hour - t2.tm_hour);
CTime::GetHour
Возвращает час, представленный CTime
объектом.
int GetHour() const throw();
Возвращаемое значение
Возвращает час, основанный на местном времени, в диапазоне от 0 до 23.
Замечания
Вызовы GetLocalTm
этой функции, которая использует внутренний статически выделенный буфер. Данные в этом буфере перезаписываются из-за вызовов других CTime
функций-членов.
Пример
// Example for CTime::GetHour, CTime::GetMinute, and CTime::GetSecond
CTime t(1999, 3, 19, 22, 15, 0); // 10:15 PM March 19, 1999
ATLASSERT(t.GetSecond() == 0);
ATLASSERT(t.GetMinute() == 15);
ATLASSERT(t.GetHour() == 22);
CTime::GetLocalTm
Возвращает структуру tm , содержащую декомпозицию времени, содержащегося в этом CTime
объекте.
struct tm* GetLocalTm(struct tm* ptm) const;
Параметры
ptm
Указывает на буфер, который получит данные времени. Если этот указатель имеет значение NULL, создается исключение.
Возвращаемое значение
Указатель на заполненную структуру tm , как определено в файле INCLUDE TIME.H. См . инструкции gmtime, _gmtime32, _gmtime64 для макета структуры.
Замечания
GetLocalTm
возвращает локальное время.
PTM не может иметь значение NULL. Если вы хотите вернуться к старому поведению, в котором ptm может иметь значение NULL, чтобы указать, что должен использоваться внутренний статически выделенный буфер, а затем неуправляемый _SECURE_ATL.
Пример
CTime t(1999, 3, 19, 22, 15, 0); // 10:15PM March 19, 1999
tm osTime; // A structure containing time elements.
t.GetLocalTm(&osTime);
ATLASSERT(osTime.tm_mon == 2); // Note zero-based month!
CTime::GetMinute
Возвращает минуту, представленную CTime
объектом.
int GetMinute() const throw();
Возвращаемое значение
Возвращает минуту, основанную на местном времени, в диапазоне от 0 до 59.
Замечания
Вызовы GetLocalTm
этой функции, которая использует внутренний статически выделенный буфер. Данные в этом буфере перезаписываются из-за вызовов других CTime
функций-членов.
Пример
См. пример GetHour.
CTime::GetMonth
Возвращает месяц, представленный CTime
объектом.
int GetMonth() const throw();
Возвращаемое значение
Возвращает месяц, основанный на местном времени, в диапазоне от 1 до 12 (1 = январь).
Замечания
Вызовы GetLocalTm
этой функции, которая использует внутренний статически выделенный буфер. Данные в этом буфере перезаписываются из-за вызовов других CTime
функций-членов.
Пример
См. пример getDay.
CTime::GetSecond
Возвращает второй, представленный CTime
объектом.
int GetSecond() const throw();
Возвращаемое значение
Возвращает второй, основанный на местном времени, в диапазоне от 0 до 59.
Замечания
Вызовы GetLocalTm
этой функции, которая использует внутренний статически выделенный буфер. Данные в этом буфере перезаписываются из-за вызовов других CTime
функций-членов.
Пример
См. пример GetHour.
CTime::GetTime
Возвращает значение __time64_t для данного CTime
объекта.
__time64_t GetTime() const throw();
Возвращаемое значение
GetTime
возвращает количество секунд между текущим CTime
объектом и 1 января 1970 года.
Пример
CTime t(2005, 10, 20, 23, 50, 0); // 11:50 PM October 20, 2005
time_t osBinaryTime = t.GetTime(); // time_t defined in <time.h>
_tprintf_s(_T("time_t = %ld\n"), osBinaryTime);
CTime::GetYear
Возвращает год, представленный CTime
объектом.
int GetYear();
Возвращаемое значение
Возвращает год, основанный на местном времени, в диапазоне от 1 января 1970 г. до 18 января 2038 г. (включительно).
Замечания
Вызовы GetLocalTm
этой функции, которая использует внутренний статически выделенный буфер. Данные в этом буфере перезаписываются из-за вызовов других CTime
функций-членов.
Пример
См. пример getDay.
CTime::operator =
Оператор присваивания .
CTime& operator=(__time64_t time) throw();
Параметры
time
Новое значение даты и времени.
Возвращаемое значение
Обновленный CTime
объект.
Замечания
Этот перегруженный оператор назначения копирует исходное время в этот CTime
объект. Внутреннее хранилище времени в объекте CTime
не зависит от часового пояса. Преобразование часового пояса не требуется во время назначения.
CTime::operator +, -
Эти операторы добавляют и вычитают и CTime
вычитают CTimeSpan
объекты.
CTime operator+(CTimeSpan timeSpan) const throw();
CTime operator-(CTimeSpan timeSpan) const throw();
CTimeSpan operator-(CTime time) const throw();
Параметры
timeSpan
Добавляемый CTimeSpan
или вычитаемый объект.
time
Вычитаемый CTime
объект.
Возвращаемое значение
Объект CTime
или CTimeSpan
объект, представляющий результат операции.
Замечания
CTime
объекты представляют абсолютное время, CTimeSpan
объекты представляют относительное время. Первые два оператора позволяют добавлять и вычитать CTimeSpan
объекты в объекты и из CTime
них. Третий оператор позволяет вычитать один CTime
объект из другого CTimeSpan
для получения объекта.
Пример
CTime t1(1999, 3, 19, 22, 15, 0); // 10:15 PM March 19, 1999
CTime t2(1999, 3, 20, 22, 15, 0); // 10:15 PM March 20, 1999
CTimeSpan ts = t2 - t1; // Subtract 2 CTimes
ATLASSERT(ts.GetTotalSeconds() == 86400L);
ATLASSERT((t1 + ts) == t2); // Add a CTimeSpan to a CTime.
ATLASSERT((t2 - ts) == t1); // Subtract a CTimeSpan from a CTime.
CTime::operator +=, -=
Эти операторы добавляют и вычитают CTimeSpan
объект в объект и из этого CTime
объекта.
CTime& operator+=(CTimeSpan span) throw();
CTime& operator-=(CTimeSpan span) throw();
Параметры
пядь
Добавляемый CTimeSpan
или вычитаемый объект.
Возвращаемое значение
Обновленный CTime
объект.
Замечания
Эти операторы позволяют добавлять и вычитать CTimeSpan
объект в объект и из этого CTime
объекта.
Пример
CTime t(1999, 3, 19, 22, 15, 0); // 10:15 PM March 19, 1999
t += CTimeSpan(0, 1, 0, 0); // 1 hour exactly
ATLASSERT(t.GetHour() == 23);
CTime::Serialize64
Примечание.
Этот метод доступен только в проектах MFC.
Сериализует данные, связанные с переменной-членом, в архив или из нее.
CArchive& Serialize64(CArchive& ar);
Параметры
ар
Объект CArchive
, который требуется обновить.
Возвращаемое значение
Обновленный CArchive
объект.
См. также
asctime_s, _wasctime_s
_ftime_s, _ftime32_s, _ftime64_s
gmtime_s, _gmtime32_s, _gmtime64_s
localtime_s, _localtime32_s, _localtime64_s
strftime, wcsftime, _strftime_l, _wcsftime_l
time, _time32, _time64
Класс CTimeSpan
Диаграмма иерархии
Общие классы ATL/MFC