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


Класс 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