Класс QDateTime
Класс QDateTime предоставляет функции работы с датой и временем. Подробнее...
| Заголовок: | #include <QDateTime> |
| qmake: | QT += core |
Примечание: Все функции в этом классе являются реентерабельными.
Открытые функции
| QDateTime() | |
| QDateTime(const QDate &date) | |
| QDateTime(const QDate &date, const QTime &time, Qt::TimeSpec spec = Qt::LocalTime) | |
| QDateTime(const QDate &date, const QTime &time, Qt::TimeSpec spec, int offsetSeconds) | |
| QDateTime(const QDate &date, const QTime &time, const QTimeZone &timeZone) | |
| QDateTime(const QDateTime &other) | |
| ~QDateTime() | |
| QDateTime | addDays(qint64 ndays) const |
| QDateTime | addMSecs(qint64 msecs) const |
| QDateTime | addMonths(int nmonths) const |
| QDateTime | addSecs(qint64 s) const |
| QDateTime | addYears(int nyears) const |
| QDate | date() const |
| qint64 | daysTo(const QDateTime &other) const |
| bool | isDaylightTime() const |
| bool | isNull() const |
| bool | isValid() const |
| qint64 | msecsTo(const QDateTime &other) const |
| int | offsetFromUtc() const |
| qint64 | secsTo(const QDateTime &other) const |
| void | setDate(const QDate &date) |
| void | setMSecsSinceEpoch(qint64 msecs) |
| void | setOffsetFromUtc(int offsetSeconds) |
| void | setTime(const QTime &time) |
| void | setTimeSpec(Qt::TimeSpec spec) |
| void | setTimeZone(const QTimeZone &toZone) |
| void | setTime_t(uint seconds) |
| void | swap(QDateTime &other) |
| QTime | time() const |
| Qt::TimeSpec | timeSpec() const |
| QTimeZone | timeZone() const |
| QString | timeZoneAbbreviation() const |
| CFDateRef | toCFDate() const |
| QDateTime | toLocalTime() const |
| qint64 | toMSecsSinceEpoch() const |
| NSDate * | toNSDate() const |
| QDateTime | toOffsetFromUtc(int offsetSeconds) const |
| QString | toString(const QString &format) const |
| QString | toString(Qt::DateFormat format = Qt::TextDate) const |
| QDateTime | toTimeSpec(Qt::TimeSpec spec) const |
| QDateTime | toTimeZone(const QTimeZone &timeZone) const |
| uint | toTime_t() const |
| QDateTime | toUTC() const |
| bool | operator!=(const QDateTime &other) const |
| bool | operator<(const QDateTime &other) const |
| bool | operator<=(const QDateTime &other) const |
| QDateTime & | operator=(QDateTime &&other) |
| QDateTime & | operator=(const QDateTime &other) |
| bool | operator==(const QDateTime &other) const |
| bool | operator>(const QDateTime &other) const |
| bool | operator>=(const QDateTime &other) const |
Статические открытые члены
| QDateTime | текущееВремя() |
| QDateTime | текущееВремяUtc() |
| qint64 | текущиеМиллисекундыСЭпохи() |
| QDateTime | изCFDate(CFDateRef date) |
| QDateTime | изMSecsСЭпохи(qint64 msecs) |
| QDateTime | изMSecsСЭпохи(qint64 msecs, Qt::TimeSpec spec, int offsetSeconds = 0) |
| QDateTime | изMSecsСЭпохи(qint64 msecs, const QTimeZone &timeZone) |
| QDateTime | изNSDate(const NSDate *date) |
| QDateTime | изСтроки(const QString &string, Qt::DateFormat format = Qt::TextDate) |
| QDateTime | изСтроки(const QString &string, const QString &format) |
| QDateTime | изTime_t(uint seconds) |
| QDateTime | изTime_t(uint seconds, Qt::TimeSpec spec, int offsetSeconds = 0) |
| QDateTime | изTime_t(uint seconds, const QTimeZone &timeZone) |
Связанные нечлены
| QDataStream & | operator<<(QDataStream &out, const QDateTime &dateTime) |
| QDataStream & | operator>>(QDataStream &in, QDateTime &dateTime) |
Подробное описание
Класс QDateTime предоставляет функции для работы с датой и временем.
Объект QDateTime содержит календарную дату и время («дата и время»). Это сочетание классов QDate и QTime. Он может считывать текущую дату и время с системных часов. Он предоставляет функции для сравнения дат и времени и для изменения даты и времени, добавляя определенное количество секунд, дней, месяцев или лет.
Объект QDateTime обычно создается либо путем явного указания даты и времени в конструкторе, либо с помощью статической функции currentDateTime(), возвращающей объект QDateTime, установленный на текущее системное время. Дату и время можно изменить с помощью setDate() и setTime(). Дату и время также можно установить с помощью функции setTime_t(), принимающей значение в формате POSIX — «количество секунд с 00:00:00 1 января 1970 года». Функция fromString() возвращает QDateTime, заданную строкой и форматом даты, используемым для интерпретации даты в строке.
Функции date() и time() обеспечивают доступ к частям даты и времени. Та же информация предоставляется в текстовом формате функцией toString().
QDateTime предоставляет полный набор операторов для сравнения двух объектов QDateTime, где меньшее значение соответствует более ранней дате, а большее — более поздней.
Вы можете увеличить (или уменьшить) дату и время на заданное количество миллисекунд с помощью addMSecs(), секунд с помощью addSecs() или дней с помощью addDays(). Аналогично, вы можете использовать addMonths() и addYears(). Функция daysTo() возвращает количество дней между двумя датами, secsTo() — количество секунд, а msecsTo() — количество миллисекунд между двумя датами.
QDateTime может хранить даты и время как локальное время, так и как UTC. QDateTime::currentDateTime() возвращает QDateTime в формате локального времени; используйте toUTC(), чтобы преобразовать его в UTC. Вы также можете использовать timeSpec(), чтобы определить, хранит ли объект QDateTime время UTC или локальное время. Такие операции, как addSecs() и secsTo(), учитывают летнее время (DST).
Примечание: QDateTime не учитывает високосные секунды.
Отсутствие года 0
Нет года 0. Даты в этом году считаются недействительными. Год -1 — год «за 1 год до Рождества Христова» или «за 1 год до нашей эры». День перед 1 января 1 года н. э. — 31 декабря 1 года до н. э.
Диапазон допустимых дат
Диапазон допустимых значений, которые можно хранить в QDateTime, зависит от реализации внутреннего хранения. QDateTime в настоящее время хранится в qint64 как сериализованное значение msecs, кодирующее дату и время. Это ограничивает диапазон дат примерно +/- 292 миллионами лет, по сравнению с диапазоном QDate +/- 2 миллиарда лет. Следует проявлять осторожность при создании QDateTime с экстремальными значениями, чтобы не превысить пределы хранения. Точный диапазон поддерживаемых значений зависит от Qt::TimeSpec и часового пояса.
Использование системного часового пояса
QDateTime использует информацию о часовом поясе системы для определения смещения местного времени от UTC. Если система настроена неправильно или не обновлена, QDateTime может давать неверные результаты.
Летнее время (DST)
QDateTime учитывает информацию о часовом поясе системы при работе с DST. На современных Unix-системах это означает, что она применяет соответствующие исторические данные о DST, когда это возможно. В Windows и Windows CE, где система не поддерживает исторические данные о DST, историческая точность не поддерживается относительно DST.
Диапазон допустимых дат, учитывая DST, составляет с 1970-01-01 по настоящее время, а правила для обработки DST действуют до 2037-12-31, но они могут измениться. Для дат, выходящих за этот диапазон, QDateTime делает «лучшую догадку», используя правила для 1970 или 2037 года, но мы не можем гарантировать точность. Это означает, что QDateTime не учитывает изменения часового пояса в регионе до 1970 года, даже если база данных часовых поясов системы поддерживает эту информацию.
QDateTime учитывает переход от стандартного времени к летнему. Например, если переход происходит в 2 часа утра, и часы переводятся на 3 часа утра, то с 02:00:00 до 02:59:59.999 отсутствует «час», который QDateTime считает недействительным. Любые вычисления с датами и временем учтут этот пропущенный час и вернут действительный результат.
Смещение от UTC
Также поддерживается Qt::TimeSpec типа Qt::OffsetFromUTC. Это позволяет определить QDateTime относительно UTC с фиксированным смещением заданного количества секунд от UTC. Например, смещение +3600 секунд соответствует на часу раньше UTC и обычно записывается в стандартной ISO-нотации как «UTC+01:00». Летнее время никогда не применяется с этим типом TimeSpec.
Нет явного ограничения на размер смещения в секундах, но есть неявное ограничение, наложенное методами toString() и fromString(), которые используют формат [+|-]чч:мм, фактически ограничивая диапазон +/- 99 часами и 59 минутами, и только целыми минутами. Обратите внимание, что в настоящее время ни один часовой пояс не находится вне диапазона +/- 14 часов.
Поддержка часовых поясов
Также поддерживается Qt::TimeSpec типа Qt::TimeZone в сочетании с классом QTimeZone. Это позволяет определить дату и время в указанном часовом поясе, следуя согласованному набору правил перехода на летнее время. Например, часовой пояс «Europe/Berlin» будет применять правила летнего времени, используемые в Германии с 1970 года. Обратите внимание, что применяемые правила перехода зависят от поддержки платформы. Для получения более подробной информации см. документацию по QTimeZone.
См. также QDate, QTime, QDateTimeEdit и QTimeZone.
Документация по функциям-членам
QDateTime::QDateTime()
Конструирует нулевую дату и время (т. е. нулевую дату и нулевое время). Нулевая дата и время недействительны, так как дата недействительна.
См. также isValid().
QDateTime::QDateTime(const QDate &date)
Конструирует дату и время с заданной датой, действительным временем (00:00:00.000) и устанавливает timeSpec() в Qt::LocalTime.
QDateTime::QDateTime(const QDate &date, const QTime &time, Qt::TimeSpec spec = Qt::LocalTime)
Конструирует дату и время с заданной датой и временем, используя указанное значение spec.
Если date действительна, а time нет, время будет установлено в полночь.
Если spec имеет значение Qt::OffsetFromUTC, то оно будет установлено в Qt::UTC, т.е. смещение 0 секунд. Для создания даты и времени Qt::OffsetFromUTC используйте соответствующий конструктор.
Если spec имеет значение Qt::TimeZone, то значение spec будет установлено в Qt::LocalTime, т.е. текущая временная зона системы. Для создания даты и времени Qt::TimeZone используйте соответствующий конструктор.
QDateTime::QDateTime(const QDate &date, const QTime &time, Qt::TimeSpec spec, int offsetSeconds)
Конструирует дату и время с заданным date и time, используя временную спецификацию, определённую spec и offsetSeconds секунд.
Если date валидно, а time нет, время будет установлено в полночь.
Если spec не равно Qt::OffsetFromUTC, то offsetSeconds будет проигнорировано.
Если spec равно Qt::OffsetFromUTC и offsetSeconds равно 0, то timeSpec() будет установлено в Qt::UTC, т.е. смещение 0 секунд.
Если spec равно Qt::TimeZone, то значение spec будет установлено в Qt::LocalTime, т.е. текущая временная зона системы. Для создания даты и времени Qt::TimeZone используйте соответствующий конструктор.
Эта функция была добавлена в Qt 5.2.
QDateTime::QDateTime(const QDate &date, const QTime &time, const QTimeZone &timeZone)
Конструирует дату и время с заданным date и time, используя временную зону, указанную в timeZone.
Если date валидно, а time нет, время будет установлено в 00:00:00.
Если timeZone неверна, то дата и время будут невалидными.
Эта функция была добавлена в Qt 5.2.
QDateTime::QDateTime(const QDateTime &other)
Конструирует копию даты и времени other.
QDateTime::~QDateTime()
Уничтожает дату и время.
QDateTime QDateTime::addDays(qint64 ndays) const
Возвращает объект QDateTime, содержащий дату и время, на ndays дней позже или раньше, если ndays отрицательное, чем дата и время этого объекта.
Если timeSpec() равно Qt::LocalTime и полученная дата и время попадают на момент перехода с летнего на зимнее время, то результат будет скорректирован соответствующим образом. Т.е. если переход происходит в 2:00, а часы переводятся на 3:00, и результат попадает между 2:00 и 3:00, то результат будет скорректирован, чтобы попасть после 3:00.
См. также daysTo(), addMonths(), addYears() и addSecs().
QDateTime QDateTime::addMSecs(qint64 msecs) const
Возвращает объект QDateTime, содержащий дату и время, на msecs миллисекунд позже или раньше, чем дата и время этого объекта (если msecs отрицательное).
Если текущее время недействительно, будет возвращено недействительное время.
См. также addSecs(), msecsTo(), addDays(), addMonths() и addYears().
QDateTime QDateTime::addMonths(int nmonths) const
Возвращает объект QDateTime, содержащий дату и время, на nmonths месяцев позже или раньше, чем дата и время этого объекта (если nmonths отрицательное).
Если timeSpec() равно Qt::LocalTime и полученная дата и время попадают на момент перехода с летнего на зимнее время, то результат будет скорректирован соответствующим образом. Т.е. если переход происходит в 2:00, а часы переводятся на 3:00, и результат попадает между 2:00 и 3:00, то результат будет скорректирован, чтобы попасть после 3:00.
См. также daysTo(), addDays(), addYears() и addSecs().
QDateTime QDateTime::addSecs(qint64 s) const
Возвращает объект QDateTime, содержащий дату и время, на s секунд позже или раньше, чем дата и время этого объекта (если s отрицательное).
Если текущее время недействительно, будет возвращено недействительное время.
См. также addMSecs(), secsTo(), addDays(), addMonths() и addYears().
QDateTime QDateTime::addYears(int nyears) const
Возвращает объект QDateTime, содержащий дату и время, на nyears лет позже или раньше, чем дата и время этого объекта (если nyears отрицательное).
Если timeSpec() равно Qt::LocalTime и полученная дата и время попадают на момент перехода с летнего на зимнее время, то результат будет скорректирован соответствующим образом. Т.е. если переход происходит в 2:00, а часы переводятся на 3:00, и результат попадает между 2:00 и 3:00, то результат будет скорректирован, чтобы попасть после 3:00.
См. также daysTo(), addDays(), addMonths() и addSecs().
QDateTime QDateTime::currentDateTime()
Возвращает текущее время и дату, полученное с системных часов, во временной зоне по умолчанию.
См. также currentDateTimeUtc(), QDate::currentDate(), QTime::currentTime() и toTimeSpec().
QDateTime QDateTime::currentDateTimeUtc()
Возвращает текущую дату и время, полученные с системных часов, в UTC.
Эта функция была добавлена в Qt 4.7.
См. также currentDateTime(), QDate::currentDate(), QTime::currentTime() и toTimeSpec().
qint64 QDateTime::currentMSecsSinceEpoch()
Возвращает количество миллисекунд, прошедших с 1970-01-01T00:00:00 по всемирному координированному времени (UTC). Это число аналогично переменной POSIX time_t, но выражено в миллисекундах.
Эта функция была добавлена в Qt 4.7.
См. также currentDateTime(), currentDateTimeUtc(), toTime_t() и toTimeSpec().
QDate QDateTime::date() const
Возвращает часть даты даты и времени.
См. также setDate(), time() и timeSpec().
qint64 QDateTime::daysTo(const QDateTime &other) const
Возвращает количество дней от текущей даты и времени до даты и времени other. Количество дней подсчитывается как количество раз, когда достигается полночь между текущей датой и временем и датой и временем other. Это означает, что различие в 10 минут с 23:55 до 0:05 следующего дня считается одним днём.
Если дата и время other раньше, чем текущие дата и время, возвращаемое значение является отрицательным.
Пример:
QDateTime startDate(QDate(2012, 7, 6), QTime(8, 30, 0)); QDateTime endDate(QDate(2012, 7, 7), QTime(16, 30, 0)); qDebug() << "Days from startDate to endDate: " << startDate.daysTo(endDate); startDate = QDateTime(QDate(2012, 7, 6), QTime(23, 55, 0)); endDate = QDateTime(QDate(2012, 7, 7), QTime(0, 5, 0)); qDebug() << "Days from startDate to endDate: " << startDate.daysTo(endDate); qSwap(startDate, endDate); // Make endDate before startDate. qDebug() << "Days from startDate to endDate: " << startDate.daysTo(endDate);
См. также addDays(), secsTo() и msecsTo().
QDateTime QDateTime::fromCFDate(CFDateRef date)
Создаёт новый объект QDateTime, содержащий копию CFDate date.
Эта функция была добавлена в Qt 5.5.
См. также toCFDate().
QDateTime QDateTime::fromMSecsSinceEpoch(qint64 msecs)
Возвращает дату и время, соответствующее количеству миллисекунд msecs, прошедших с 1970-01-01T00:00:00.000 по всемирному координированному времени (Qt::UTC), и преобразует её в Qt::LocalTime. В системах, которые не поддерживают временные зоны, время устанавливается так, как будто местное время равно Qt::UTC.
Обратите внимание, что существуют возможные значения msecs, которые лежат за пределами допустимого диапазона QDateTime, как отрицательные, так и положительные. Поведение этой функции для этих значений не определено.
Эта функция была добавлена в Qt 4.7.
См. также toTime_t() и setTime_t().
[static] QDateTime QDateTime::fromMSecsSinceEpoch(qint64 msecs, Qt::TimeSpec spec, int offsetSeconds = 0)
Возвращает дату и время, являющиеся количеством миллисекунд msecs, прошедших с 1970-01-01T00:00:00.000 по координированному всемирному времени (Qt::UTC) и преобразованные к заданному spec.
Обратите внимание, что существуют возможные значения для msecs, которые выходят за пределы допустимого диапазона для QDateTime, как отрицательные, так и положительные. Поведение этой функции для этих значений не определено.
Если spec не равно Qt::OffsetFromUTC, то offsetSeconds будет проигнорировано. Если spec равно Qt::OffsetFromUTC, а offsetSeconds равно 0, то spec будет установлено в Qt::UTC, то есть смещение будет 0 секунд.
Если spec равно Qt::TimeZone, то spec будет установлено в Qt::LocalTime, то есть текущая часовая зона системы.
Эта функция была добавлена в Qt 5.2.
См. также fromTime_t().
[static] QDateTime QDateTime::fromMSecsSinceEpoch(qint64 msecs, const QTimeZone &timeZone)
Возвращает дату и время, являющиеся количеством миллисекунд msecs, прошедших с 1970-01-01T00:00:00.000 по координированному всемирному времени (Qt::UTC) и с заданной timeZone.
Эта функция была добавлена в Qt 5.2.
См. также fromTime_t().
[static] QDateTime QDateTime::fromNSDate(const NSDate *date)
Создаёт новый QDateTime содержащий копию NSDate date.
Эта функция была добавлена в Qt 5.5.
См. также toNSDate().
[static] QDateTime QDateTime::fromString(const QString &string, Qt::DateFormat format = Qt::TextDate)
Возвращает QDateTime, представленный строкой string, используя заданный format, или недействительную дату и время, если это невозможно.
Примечание для Qt::TextDate: Рекомендуется использовать короткие английские названия месяцев (например, «Янв»). Хотя могут использоваться и локальные названия месяцев, они зависят от настроек языка пользователя.
См. также toString() и QLocale::toDateTime().
[static] QDateTime QDateTime::fromString(const QString &string, const QString &format)
Возвращает QDateTime, представленный строкой string, используя заданный format, или недействительную дату и время, если строка не может быть обработана.
Эти выражения могут быть использованы для части даты строки формата:
| Выражение | Вывод |
|---|---|
| d | день как число без ведущего нуля (от 1 до 31) |
| dd | день как число с ведущим нулём (от 01 до 31) |
| ddd | сокращённое локальное название дня (например, 'Пн' до 'Вс'). Использует QDate::shortDayName(). |
| dddd | полное локальное название дня (например, 'Понедельник' до 'Воскресенье'). Использует QDate::longDayName(). |
| M | месяц как число без ведущего нуля (от 1 до 12) |
| MM | месяц как число с ведущим нулём (от 01 до 12) |
| MMM | сокращённое локальное название месяца (например, 'Янв' до 'Дек'). Использует QDate::shortMonthName(). |
| MMMM | полное локальное название месяца (например, 'Январь' до 'Декабрь'). Использует QDate::longMonthName(). |
| yy | год как число из двух цифр (00-99) |
| yyyy | год как число из четырёх цифр |
Примечание: В отличие от других версий этой функции, имена дней и месяцев должны быть указаны на языке пользователя. Использование английских названий возможно только если язык пользователя - английский.
Эти выражения могут быть использованы для части времени строки формата:
| Выражение | Вывод |
|---|---|
| h | час без ведущего нуля (от 0 до 23 или от 1 до 12, если отображаются AM/PM) |
| hh | час с ведущим нулём (от 00 до 23 или от 01 до 12, если отображаются AM/PM) |
| H | час без ведущего нуля (от 0 до 23, даже с отображением AM/PM) |
| HH | час с ведущим нулём (от 00 до 23, даже с отображением AM/PM) |
| m | минута без ведущего нуля (от 0 до 59) |
| mm | минута с ведущим нулём (от 00 до 59) |
| s | секунда без ведущего нуля (от 0 до 59) |
| ss | секунда с ведущим нулём (от 00 до 59) |
| z | миллисекунды без ведущих нулей (от 0 до 999) |
| zzz | миллисекунды с ведущими нулями (от 000 до 999) |
| AP или A | интерпретируется как AM/PM время. AP должно быть «AM» или «PM». |
| ap или a | Интерпретируется как AM/PM время. ap должно быть «am» или «pm». |
Все остальные символы ввода будут обрабатываться как текст. Любая последовательность символов, заключённая в одинарные кавычки, также будет обрабатываться как текст и не будет использоваться как выражение.
QTime time1 = QTime::fromString("131", "HHh");
// time1 is 13:00:00
QTime time1 = QTime::fromString("1apA", "1amAM");
// time1 is 01:00:00
QDateTime dateTime2 = QDateTime::fromString("M1d1y9800:01:02",
"'M'M'd'd'y'yyhh:mm:ss");
// dateTime is 1 January 1998 00:01:02 Если формат не удовлетворяет условиям, возвращается недействительный QDateTime. Выражения, не имеющие ведущих нулей (d, M, h, m, s, z), будут жадными. Это означает, что они будут использовать две цифры, даже если это выведет их за пределы диапазона и/или оставит недостаточно цифр для других разделов.
QDateTime dateTime = QDateTime::fromString("130", "Mm"); // invalid Это могло означать 1 Января 00:30.00, но M возьмёт две цифры.
Неправильно указанные поля в string приведут к возвращению недействительного QDateTime. Например, рассмотрим следующий код, где двухзначный год 12 читается как 1912 (см. таблицу ниже для всех значений по умолчанию); полученная дата и время недействительны, потому что 23 апреля 1912 года было вторником, а не понедельником:
QString string = "Monday, 23 April 12 22:51:41"; QString format = "dddd, d MMMM yy hh:mm:ss"; QDateTime invalid = QDateTime::fromString(string, format);
Правильный код:
QString string = "Tuesday, 23 April 12 22:51:41"; QString format = "dddd, d MMMM yy hh:mm:ss"; QDateTime valid = QDateTime::fromString(string, format);
Для любого поля, не представленного в формате, используются следующие значения по умолчанию:
| Поле | Значение по умолчанию |
|---|---|
| Год | 1900 |
| Месяц | 1 (Январь) |
| День | 1 |
| Час | 0 |
| Минута | 0 |
| Секунда | 0 |
Например:
QDateTime dateTime = QDateTime::fromString("1.30.1", "M.d.s");
// dateTime is January 30 in 1900 at 00:00:01.
dateTime = QDateTime::fromString("12", "yy");
// dateTime is January 1 in 1912 at 00:00:00. См. также toString(), QDate::fromString(), QTime::fromString(), и QLocale::toDateTime().
[static] QDateTime QDateTime::fromTime_t(uint seconds)
Возвращает дату и время, являющиеся количеством seconds секунд, прошедших с 1970-01-01T00:00:00 по координированному всемирному времени (Qt::UTC) и преобразованные к Qt::LocalTime. В системах, не поддерживающих часовые пояса, время будет установлено так, как если бы местное время было Qt::UTC.
Эта функция была добавлена в Qt 4.2.
См. также toTime_t() и setTime_t().
[static] QDateTime QDateTime::fromTime_t(uint seconds, Qt::TimeSpec spec, int offsetSeconds = 0)
Возвращает дату и время, являющиеся количеством seconds секунд, прошедших с 1970-01-01T00:00:00 по координированному всемирному времени (Qt::UTC) и преобразованные к заданному spec.
Если spec не равно Qt::OffsetFromUTC, то offsetSeconds будет проигнорировано. Если spec равно Qt::OffsetFromUTC, а offsetSeconds равно 0, то spec будет установлено в Qt::UTC, то есть смещение будет 0 секунд.
Эта функция была добавлена в Qt 5.2.
См. также toTime_t() и setTime_t().
[static] QDateTime QDateTime::fromTime_t(uint seconds, const QTimeZone &timeZone)
Возвращает дату и время, являющиеся количеством seconds секунд, прошедших с 1970-01-01T00:00:00 по координированному всемирному времени (Qt::UTC) и с заданной timeZone.
Эта функция была добавлена в Qt 5.2.
См. также toTime_t() и setTime_t().
bool QDateTime::isDaylightTime() const
Возвращает значение, указывающее, относится ли данная дата и время к летнему времени.
Если Qt::TimeSpec не равно Qt::LocalTime или Qt::TimeZone, то функция всегда возвращает false.
Эта функция была добавлена в Qt 5.2.
См. также timeSpec().
bool QDateTime::isNull() const
Возвращает true, если и дата, и время равны null; в противном случае возвращает false. Нулевая дата и время считается недействительной.
См. также QDate::isNull(), QTime::isNull() и isValid().
bool QDateTime::isValid() const
Возвращает true, если и дата, и время являются допустимыми и действительными в текущем Qt::TimeSpec, в противном случае возвращает false.
Если timeSpec() равно Qt::LocalTime или Qt::TimeZone, то дата и время проверяются на соответствие часам перехода с нормального времени на летнее, т.е. если переход происходит в 2 часа ночи, и время переходит на 3 часа ночи, то время с 02:00:00 до 02:59:59.999 считается недействительным.
См. также QDate::isValid() и QTime::isValid().
qint64 QDateTime::msecsTo(const QDateTime &other) const
Возвращает количество миллисекунд от текущей даты и времени до даты и времени other. Если дата и время other раньше, чем текущая дата и время, возвращаемое значение будет отрицательным.
Перед сравнением обе даты и время преобразуются в Qt::UTC, чтобы убедиться, что результат корректный, если летнее время (DST) применяется к одной из двух дат и времени, но не к другой.
Возвращает 0, если любая из дат и времени недействительна.
См. также addMSecs(), daysTo() и QTime::msecsTo().
int QDateTime::offsetFromUtc() const
Возвращает текущий сдвиг относительно UTC в секундах.
Если timeSpec() равно Qt::OffsetFromUTC, возвращается значение, изначально заданное.
Если timeSpec() равно Qt::TimeZone, возвращается сдвиг, действующий в часовом поясе, включая любые корректировки летнего времени.
Если timeSpec() равно Qt::LocalTime, возвращается разность между местным временем и UTC, включая любые корректировки летнего времени.
Если timeSpec() равно Qt::UTC, возвращается 0.
Эта функция была добавлена в Qt 5.2.
См. также setOffsetFromUtc().
qint64 QDateTime::secsTo(const QDateTime &other) const
Возвращает количество секунд от текущей даты и времени до даты и времени other. Если дата и время other раньше, чем текущая дата и время, возвращаемое значение будет отрицательным.
Перед сравнением обе даты и время преобразуются в Qt::UTC, чтобы убедиться, что результат корректный, если летнее время (DST) применяется к одной из двух дат и времени, но не к другой.
Возвращает 0, если любая из дат и времени недействительна.
Пример:
QDateTime now = QDateTime::currentDateTime();
QDateTime xmas(QDate(now.date().year(), 12, 25), QTime(0, 0));
qDebug("There are %d seconds to Christmas", now.secsTo(xmas)); См. также addSecs(), daysTo() и QTime::secsTo().
void QDateTime::setDate(const QDate &date)
Устанавливает часть даты текущей даты и времени на date. Если время еще не установлено, оно устанавливается на полночь. Если date недействительна, эта QDateTime становится недействительной.
См. также date(), setTime() и setTimeSpec().
void QDateTime::setMSecsSinceEpoch(qint64 msecs)
Устанавливает дату и время, используя количество миллисекунд msecs, прошедших с 1970-01-01T00:00:00.000, по координированному всемирному времени (Qt::UTC). В системах, не поддерживающих часовые пояса, эта функция ведет себя так, как будто местное время равно Qt::UTC.
Обратите внимание, что передача минимального значения qint64 (std::numeric_limits<qint64>::min()) для msecs приведет к неопределённому поведению.
Эта функция была добавлена в Qt 4.7.
См. также toMSecsSinceEpoch() и setTime_t().
void QDateTime::setOffsetFromUtc(int offsetSeconds)
Устанавливает timeSpec() в Qt::OffsetFromUTC и сдвиг на offsetSeconds. Дата и время будут относиться к другому моменту времени.
Максимальный и минимальный сдвиг составляет 14 часов в положительном или отрицательном направлении. Если offsetSeconds больше или меньше этого значения, результат будет неопределенным.
Если offsetSeconds равно 0, то timeSpec() будет установлено в Qt::UTC.
Эта функция была добавлена в Qt 5.2.
См. также isValid() и offsetFromUtc().
void QDateTime::setTime(const QTime &time)
Устанавливает часть времени текущей даты и времени на time. Если time недействительна, функция устанавливает её на полночь. Поэтому можно очистить любое установленное время в QDateTime, установив его на стандартное значение QTime:
QDateTime dt = QDateTime::currentDateTime(); dt.setTime(QTime());
См. также time(), setDate() и setTimeSpec().
void QDateTime::setTimeSpec(Qt::TimeSpec spec)
Устанавливает спецификацию времени, используемую в этой дате и времени, на spec. Дата и время будут относиться к другому моменту времени.
Если spec равно Qt::OffsetFromUTC, то timeSpec() будет установлено на Qt::UTC, т.е. эффективный сдвиг 0.
Если spec равно Qt::TimeZone, то спецификация будет установлена на Qt::LocalTime, т.е. текущий часовой пояс системы.
Пример:
QDateTime local(QDateTime::currentDateTime()); qDebug() << "Local time is:" << local; QDateTime UTC(local); UTC.setTimeSpec(Qt::UTC); qDebug() << "UTC time is:" << UTC; qDebug() << "There are" << local.secsTo(UTC) << "seconds difference between the datetimes.";
См. также timeSpec(), setDate(), setTime(), setTimeZone() и Qt::TimeSpec.
void QDateTime::setTimeZone(const QTimeZone &toZone)
Устанавливает часовой пояс, используемый в этой дате и времени, на toZone. Дата и время будут относиться к другому моменту времени.
Если toZone недействительна, дата и время будут недействительными.
Эта функция была добавлена в Qt 5.2.
См. также timeZone() и Qt::TimeSpec.
void QDateTime::setTime_t(uint seconds)
Устанавливает дату и время, используя количество seconds секунд, прошедших с 1970-01-01T00:00:00, по координированному всемирному времени (Qt::UTC). В системах, не поддерживающих часовые пояса, эта функция ведет себя так, как будто местное время равно Qt::UTC.
См. также toTime_t().
void QDateTime::swap(QDateTime &other)
Меняет местами эту дату и время с other. Эта операция очень быстрая и никогда не завершается неудачей.
Эта функция была добавлена в Qt 5.0.
QTime QDateTime::time() const
Возвращает часть времени даты и времени.
См. также setTime(), date() и timeSpec().
Qt::TimeSpec QDateTime::timeSpec() const
Возвращает спецификацию времени даты и времени.
См. также setTimeSpec(), date(), time() и Qt::TimeSpec.
QTimeZone QDateTime::timeZone() const
Возвращает часовой пояс даты и времени.
Если timeSpec() равно Qt::LocalTime, возвращается экземпляр текущего часового пояса системы. Однако следует учесть, что при копировании этого часового пояса, он не будет оставаться синхронизированным, если часовой пояс системы изменится.
Эта функция была добавлена в Qt 5.2.
См. также setTimeZone() и Qt::TimeSpec.
QString QDateTime::timeZoneAbbreviation() const
Возвращает сокращенное обозначение часового пояса для даты и времени.
Если timeSpec() равно Qt::UTC, возвращается "UTC".
Если timeSpec() равно Qt::OffsetFromUTC, возвращается строка формата "UTC[+-]00:00".
Если timeSpec() равно Qt::LocalTime, то для получения корректного сокращения используется запрос к системе.
Обратите внимание, что сокращения могут быть или не быть локализованными.
Обратите также внимание, что аббревиатура не гарантирует уникальность значения, т.е. разные часовые пояса могут иметь одну и ту же аббревиатуру.
Эта функция была введена в Qt 5.2.
См. также timeSpec().
CFDateRef QDateTime::toCFDate() const
Создаёт CFDate из QDateTime. Вызывающая сторона владеет объектом CFDate и отвечает за его освобождение.
Эта функция была введена в Qt 5.5.
См. также fromCFDate().
QDateTime QDateTime::toLocalTime() const
Возвращает дату и время, содержащиеся в этом объекте QDateTime, но с использованием определения Qt::LocalTime.
Пример:
QDateTime UTC(QDateTime::currentDateTimeUtc()); QDateTime local(UTC.toLocalTime()); qDebug() << "UTC time is:" << UTC; qDebug() << "Local time is:" << local; qDebug() << "No difference between times:" << UTC.secsTo(local);
См. также toTimeSpec().
qint64 QDateTime::toMSecsSinceEpoch() const
Возвращает дату и время в виде количества миллисекунд, прошедших с 1970-01-01T00:00:00.000 по координированному всемирному времени (Qt::UTC).
На системах, не поддерживающих часовые пояса, эта функция будет вести себя так, как если бы местное время было Qt::UTC.
Поведение этой функции не определено, если дата и время, хранящиеся в этом объекте, не являются допустимыми. Однако для всех допустимых дат эта функция возвращает уникальное значение.
Эта функция была введена в Qt 4.7.
См. также toTime_t() и setMSecsSinceEpoch().
NSDate *QDateTime::toNSDate() const
Создаёт NSDate из QDateTime. Объект NSDate автоматически освобождается.
Эта функция была введена в Qt 5.5.
См. также fromNSDate().
QDateTime QDateTime::toOffsetFromUtc(int offsetSeconds) const
Возвращает копию этой даты и времени, преобразованной в формат Qt::OffsetFromUTC с заданным значением offsetSeconds.
Если offsetSeconds равно 0, возвращается дата и время по UTC.
Эта функция была введена в Qt 5.2.
См. также setOffsetFromUtc(), offsetFromUtc() и toTimeSpec().
QString QDateTime::toString(const QString &format) const
Возвращает дату и время в виде строки. Параметр format определяет формат результирующей строки.
Для даты можно использовать следующие выражения:
| Выражение | Вывод |
|---|---|
| d | день без ведущего нуля (от 1 до 31) |
| dd | день с ведущим нулём (от 01 до 31) |
| ddd | сокращённое локальное имя дня (например, 'Пн' до 'Вс'). Используется локаль системы, т.е. QLocale::system(). |
| dddd | полное локальное имя дня (например, 'Понедельник' до 'Воскресенье'). Используется локаль системы, т.е. QLocale::system(). |
| M | месяц без ведущего нуля (1-12) |
| MM | месяц с ведущим нулём (01-12) |
| MMM | сокращённое локальное имя месяца (например, 'Янв' до 'Дек'). Используется локаль системы, т.е. QLocale::system(). |
| MMMM | полное локальное имя месяца (например, 'Январь' до 'Декабрь'). Используется локаль системы, т.е. QLocale::system(). |
| yy | год в виде двузначного числа (00-99) |
| yyyy | год в виде четырёхзначного числа |
Для времени можно использовать следующие выражения:
| Выражение | Вывод |
|---|---|
| h | час без ведущего нуля (0 до 23 или 1 до 12, если отображаются AM/PM) |
| hh | час с ведущим нулём (00 до 23 или 01 до 12, если отображаются AM/PM) |
| H | час без ведущего нуля (0 до 23, даже с отображением AM/PM) |
| HH | час с ведущим нулём (00 до 23, даже с отображением AM/PM) |
| m | минута без ведущего нуля (0 до 59) |
| mm | минута с ведущим нулём (00 до 59) |
| s | секунда без ведущего нуля (0 до 59) |
| ss | секунда с ведущим нулём (00 до 59) |
| z | миллисекунды без ведущих нулей (0 до 999) |
| zzz | миллисекунды с ведущими нулями (000 до 999) |
| AP или A | использование AM/PM. A/AP будет заменено либо "AM", либо "PM". |
| ap или a | использование am/pm. a/ap будет заменено либо "am", либо "pm". |
| t | часовой пояс (например, "CEST") |
Все остальные символы будут проигнорированы. Любая последовательность символов, заключённых в одинарные кавычки, будет рассматриваться как текст и не будет использоваться как выражение. Две последовательные одинарные кавычки ("''") заменяются одной кавычкой в выводе. Форматы без разделителей (например, "HHmm") в настоящее время не поддерживаются.
Примеры форматов строк (предполагается, что QDateTime — 21 мая 2001 г. 14:13:09):
| Формат | Результат |
|---|---|
| dd.MM.yyyy | 21.05.2001 |
| ddd MMMM d yy | Вт Май 21 01 |
| hh:mm:ss.zzz | 14:13:09.042 |
| h:m:s ap | 2:13:9 pm |
Если дата и время недопустимы, возвращается пустая строка.
См. также fromString(), QDate::toString(), QTime::toString() и QLocale::toString().
QString QDateTime::toString(Qt::DateFormat format = Qt::TextDate) const
Это перегруженная функция.
Возвращает дату и время в виде строки в заданном формате format.
Если format равен Qt::TextDate, строка форматируется стандартным образом. QDate::shortDayName(), QDate::shortMonthName() и QTime::toString() используются для создания строки, поэтому имена дня и месяца будут локальными именами, использующими локаль системы, т.е. QLocale::system(). Примером такого форматирования является "Ср Май 20 03:40:13 1998".
Если format равен Qt::ISODate, формат строки соответствует расширенному спецификации ISO 8601 для представления дат и времени, имеющей вид YYYY-MM-DDTHH:mm:ss[Z|[+|-]HH:mm], в зависимости от timeSpec() объекта QDateTime. Если timeSpec() равно Qt::UTC, к строке будет добавлен символ Z; если timeSpec() равно Qt::OffsetFromUTC, к строке будет добавлен смещение в часах и минутах от UTC.
Если format равен Qt::SystemLocaleShortDate или Qt::SystemLocaleLongDate, формат строки зависит от настроек локали системы. Идентично вызову QLocale::system().toString(datetime, QLocale::ShortFormat) или QLocale::system().toString(datetime, QLocale::LongFormat).
Если format равен Qt::DefaultLocaleShortDate или Qt::DefaultLocaleLongDate, формат строки зависит от локали по умолчанию приложения. Это локаль, установленная с помощью QLocale::setDefault(), или локаль системы, если локаль по умолчанию не была установлена. Идентично вызову QLocale().toString(datetime, QLocale::ShortFormat) или QLocale().toString(datetime, QLocale::LongFormat).
Если format равен Qt::RFC2822Date, строка форматируется в соответствии с RFC 2822.
Если дата и время недопустимы, возвращается пустая строка.
Предупреждение: формат Qt::ISODate действителен только для годов в диапазоне от 0 до 9999. Это ограничение может также применяться к локальным форматам, в зависимости от настроек локали.
См. также fromString(), QDate::toString(), QTime::toString() и QLocale::toString().
QDateTime QDateTime::toTimeSpec(Qt::TimeSpec spec) const
Возвращает копию этой даты и времени, преобразованной в заданный временной spec.
Если spec равен Qt::OffsetFromUTC, он устанавливается в Qt::UTC. Для установки в формат Qt::OffsetFromUTC используйте toOffsetFromUtc().
Если spec равен Qt::TimeZone, он устанавливается в Qt::LocalTime, т.е. в местный часовой пояс.
Пример:
QDateTime local(QDateTime::currentDateTime()); QDateTime UTC(local.toTimeSpec(Qt::UTC)); qDebug() << "Local time is:" << local; qDebug() << "UTC time is:" << UTC; qDebug() << "No difference between times:" << local.secsTo(UTC);
См. также timeSpec(), toTimeZone(), toUTC() и toLocalTime().
QDateTime QDateTime::toTimeZone(const QTimeZone &timeZone) const
Возвращает копию текущей даты и времени, преобразованную в заданный часовой пояс timeZone.
Данная функция была добавлена в Qt 5.2.
См. также timeZone() и toTimeSpec().
uint QDateTime::toTime_t() const
Возвращает дату и время как количество секунд, прошедших с 1970-01-01T00:00:00 по всемирному координированному времени (Qt::UTC).
На системах, не поддерживающих часовые пояса, эта функция будет работать так, как если бы местное время было Qt::UTC.
Примечание: Эта функция возвращает 32-битовое беззнаковое целое число, поэтому она не поддерживает даты до 1970 года, но поддерживает даты после 2038-01-19T03:14:06, которые могут не быть допустимыми значениями time_t. Будьте осторожны при передаче этих значений time_t в системные функции, которые могут интерпретировать их как отрицательные даты.
Если дата находится вне диапазона с 1970-01-01T00:00:00 по 2106-02-07T06:28:14, эта функция возвращает -1, преобразованное в беззнаковое целое число (т. е. 0xFFFFFFFF).
Для получения расширенного диапазона используйте toMSecsSinceEpoch().
См. также toMSecsSinceEpoch() и setTime_t().
QDateTime QDateTime::toUTC() const
Возвращает дату и время, содержащие информацию о дате и времени в этой дате и времени, но указанные с использованием определения Qt::UTC.
Пример:
QDateTime local(QDateTime::currentDateTime()); QDateTime UTC(local.toUTC()); qDebug() << "Local time is:" << local; qDebug() << "UTC time is:" << UTC; qDebug() << "No difference between times:" << local.secsTo(UTC);
См. также toTimeSpec().
bool QDateTime::operator!=(const QDateTime &other) const
Возвращает true, если эта дата и время отличается от даты и времени other; в противном случае возвращает false.
Две даты и время отличаются, если различаются компоненты даты, времени или часового пояса.
См. также operator==().
bool QDateTime::operator<(const QDateTime &other) const
Возвращает true, если эта дата и время раньше даты и времени other; в противном случае возвращает false.
bool QDateTime::operator<=(const QDateTime &other) const
Возвращает true, если эта дата и время раньше или равна дате и времени other; в противном случае возвращает false.
QDateTime &QDateTime::operator=(QDateTime &&other)
Оператор перемещающего присваивания.
QDateTime &QDateTime::operator=(const QDateTime &other)
Создает копию даты и времени other и возвращает ссылку на копию.
bool QDateTime::operator==(const QDateTime &other) const
Возвращает true, если эта дата и время равна дате и времени other; в противном случае возвращает false.
См. также operator!=().
bool QDateTime::operator>(const QDateTime &other) const
Возвращает true, если эта дата и время позже даты и времени other; в противном случае возвращает false.
bool QDateTime::operator>=(const QDateTime &other) const
Возвращает true, если эта дата и время позже или равна дате и времени other; в противном случае возвращает false.
Связанные внешние функции
QDataStream &operator<<(QDataStream &out, const QDateTime &dateTime)
Записывает dateTime в поток out.
См. также Сериализация типов данных Qt.
QDataStream &operator>>(QDataStream &in, QDateTime &dateTime)
Считывает дату и время из потока in в dateTime.
См. также Сериализация типов данных Qt.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qdatetime.html