Класс QTime
Класс QTime предоставляет функции работы со временем. Подробнее...
| Заголовок: | #include <QTime> |
| qmake: | QT += core |
Примечание: Все функции в этом классе являются реентерабельными.
Открытые функции
| QTime() | |
| QTime(int h, int m, int s = 0, int ms = 0) | |
| QTime | addMSecs(int ms) const |
| QTime | addSecs(int s) const |
| int | elapsed() const |
| int | hour() const |
| bool | isNull() const |
| bool | isValid() const |
| int | minute() const |
| int | msec() const |
| int | msecsSinceStartOfDay() const |
| int | msecsTo(const QTime &t) const |
| int | restart() |
| int | second() const |
| int | secsTo(const QTime &t) const |
| bool | setHMS(int h, int m, int s, int ms = 0) |
| void | start() |
| QString | toString(const QString &format) const |
| QString | toString(Qt::DateFormat format = Qt::TextDate) const |
| bool | operator!=(const QTime &t) const |
| bool | operator<(const QTime &t) const |
| bool | operator<=(const QTime &t) const |
| bool | operator==(const QTime &t) const |
| bool | operator>(const QTime &t) const |
| bool | operator>=(const QTime &t) const |
Статические открытые члены
| QTime | currentTime() |
| QTime | fromMSecsSinceStartOfDay(int msecs) |
| QTime | fromString(const QString &string, Qt::DateFormat format = Qt::TextDate) |
| QTime | fromString(const QString &string, const QString &format) |
| bool | isValid(int h, int m, int s, int ms = 0) |
Связанные нечлены
| QDataStream & | operator<<(QDataStream &out, const QTime &time) |
| QDataStream & | operator>>(QDataStream &in, QTime &time) |
Подробное описание
Класс QTime предоставляет функции работы со временем.
Объект QTime содержит время по часам, минутам, секундам и миллисекундам с момента полуночи. Он может считывать текущее время из системных часов и измерять прошедшее время. Он предоставляет функции сравнения времени и манипулирования временем, добавляя количество миллисекунд.
QTime использует 24-часовой формат времени; он не имеет понятия AM/PM. В отличие от QDateTime, QTime не знает ничего о часовых поясах или летнем времени.
Объект QTime обычно создается, либо явно задав количество часов, минут, секунд и миллисекунд, либо с помощью статической функции currentTime(), которая создает объект QTime, содержащий локальное системное время. Обратите внимание, что точность зависит от точности базовой операционной системы; не все системы обеспечивают точность в 1 миллисекунду.
Функции hour(), minute(), second() и msec() предоставляют доступ к количеству часов, минут, секунд и миллисекунд времени. Та же информация предоставляется в текстовом формате функцией toString().
QTime предоставляет полный набор операторов для сравнения двух объектов QTime. QTime A считается меньшим, чем QTime B, если A предшествует B.
Функции addSecs() и addMSecs() предоставляют время на заданное количество секунд или миллисекунд позже, чем заданное время (или раньше, если ms отрицательно). Соответственно, количество секунд или миллисекунд между двумя временами можно найти, используя secsTo() или msecsTo().
QTime может использоваться для измерения прошедшего времени, используя функции start(), restart() и elapsed().
Документация по функциям-членам
QTime::QTime()
Конструирует объект времени null. Объект null-времени может быть QTime(0, 0, 0, 0) (т.е., полуночь), за исключением того, что isNull() возвращает true и isValid() возвращает false.
См. также isNull() и isValid().
QTime::QTime(int h, int m, int s = 0, int ms = 0)
Конструирует время с часами h, минутами m, секундами s и миллисекундами ms.
h должен быть в диапазоне от 0 до 23, m и s должны быть в диапазоне от 0 до 59, а ms должен быть в диапазоне от 0 до 999.
См. также isValid().
QTime QTime::addMSecs(int ms) const
Возвращает объект QTime, содержащий время, на ms миллисекунд позже, чем время этого объекта (или раньше, если ms отрицательно).
Обратите внимание, что время будет переходить, если оно перейдет полночь. См. addSecs() для примера.
Возвращает null-время, если это время недействительно.
См. также addSecs(), msecsTo() и QDateTime::addMSecs().
QTime QTime::addSecs(int s) const
Возвращает объект QTime, содержащий время, на s секунд позже, чем время этого объекта (или раньше, если s отрицательно).
Обратите внимание, что время будет переходить, если оно перейдет полночь.
Возвращает null-время, если это время недействительно.
Пример:
QTime n(14, 0, 0); // n == 14:00:00 QTime t; t = n.addSecs(70); // t == 14:01:10 t = n.addSecs(-70); // t == 13:58:50 t = n.addSecs(10 * 60 * 60 + 5); // t == 00:00:05 t = n.addSecs(-15 * 60 * 60); // t == 23:00:00
См. также addMSecs(), secsTo() и QDateTime::addSecs().
QTime QTime::currentTime()
Возвращает текущее время, полученное от системных часов.
Обратите внимание, что точность зависит от точности базовой операционной системы; не все системы обеспечивают точность в 1 миллисекунду.
int QTime::elapsed() const
Возвращает количество миллисекунд, прошедших с момента последнего вызова start() или restart().
Обратите внимание, что счётчик обнуляется через 24 часа после последнего вызова start() или restart().
Обратите внимание, что точность зависит от точности базовой операционной системы; не все системы обеспечивают точность в 1 миллисекунду.
Предупреждение: Если настройки системных часов были изменены с момента последнего вызова start() или restart(), результат неопределён. Это может произойти при включении или выключении летнего времени.
См. также start() и restart().
[static] QTime QTime::fromMSecsSinceStartOfDay(int msecs)
Возвращает новый экземпляр QTime с временем, установленным в соответствии с количеством msecs с начала дня, то есть с 00:00:00.
Если msecs выходит за допустимый диапазон, будет возвращён недопустимый экземпляр QTime.
См. также msecsSinceStartOfDay().
[static] QTime QTime::fromString(const QString &string, Qt::DateFormat format = Qt::TextDate)
Возвращает время, представленное в строке string, как экземпляр QTime с использованием заданного формата, или недопустимое время, если это невозможно.
Обратите внимание, что fromString() использует строку, закодированную в «C» локали, для преобразования миллисекунд в значение с плавающей точкой. Если локаль по умолчанию не «C», это может привести к двум попыткам преобразования (если преобразование не удаётся для локале по умолчанию). Это следует рассматривать как реализационную деталь.
См. также toString() и QLocale::toTime().
[static] QTime QTime::fromString(const QString &string, const QString &format)
Возвращает QTime, представленный строкой string, с использованием заданного формата, или недопустимое время, если строку невозможно разобрать.
Для формата можно использовать следующие выражения:
| Выражение | Вывод |
|---|---|
| h | час без ведущего нуля (0 до 23 или 1 до 12, если отображаются AM/PM) |
| hh | час с ведущим нулём (00 до 23 или 01 до 12, если отображаются AM/PM) |
| m | минута без ведущего нуля (0 до 59) |
| mm | минута с ведущим нулём (00 до 59) |
| s | целая секунда без ведущего нуля (0 до 59) |
| ss | целая секунда с ведущим нулём (00 до 59) |
| z | дробная часть секунды, после десятичной точки, без хвостовых нулей (0 до 999). Таким образом, «s.z» сообщает о секундах с полной доступной точностью (миллисекунды) без хвостовых нулей. |
| zzz | дробная часть секунды с точностью до миллисекунды, включая хвостовые нули при необходимости (000 до 999). |
| AP | интерпретировать как время AM/PM. AP должно быть «AM» или «PM». |
| ap | Интерпретировать как время AM/PM. ap должно быть «am» или «pm». |
Все остальные символы входных данных будут обрабатываться как текст. Любая последовательность символов, заключённых в одинарные кавычки, также будет обрабатываться как текст и не будет использоваться как выражение.
QTime time = QTime::fromString("1mm12car00", "m'mm'hcarss");
// time is 12:01.00 Если формат не соответствует, возвращается недопустимый экземпляр QTime. Выражения, не ожидающие ведущих нулей (h, m, s и z), являются жадными. Это означает, что они будут использовать два знака даже в том случае, если это выводит их за пределы допустимого диапазона значений и оставляет слишком мало цифр для других разделов. Например, следующая строка могла означать 00:07:10, но m захватит две цифры, что приведёт к недопустимому времени:
QTime time = QTime::fromString("00:710", "hh:ms"); // invalid Любой поле, не представленный в формате, будет установлено в ноль. Например:
QTime time = QTime::fromString("1.30", "m.s");
// time is 00:01:30.000 См. также toString(), QDateTime::fromString(), QDate::fromString(), и QLocale::toTime().
int QTime::hour() const
Возвращает значение часа (от 0 до 23).
Возвращает -1, если время недопустимо.
См. также minute(), second() и msec().
bool QTime::isNull() const
Возвращает true , если время равно нулю (то есть объект QTime был создан с использованием конструктора по умолчанию); в противном случае возвращает false. Время, равное нулю, также является недопустимым временем.
См. также isValid().
bool QTime::isValid() const
Возвращает true, если время допустимо; в противном случае возвращает false. Например, время 23:30:55.746 допустимо, а 24:12:30 — нет.
См. также isNull().
[static] bool QTime::isValid(int h, int m, int s, int ms = 0)
Это перегруженный метод.
Возвращает true, если указанное время допустимо; в противном случае возвращает false.
Время допустимо, если h находится в диапазоне от 0 до 23, m и s — в диапазоне от 0 до 59, а ms — в диапазоне от 0 до 999.
Пример:
QTime::isValid(21, 10, 30); // returns true QTime::isValid(22, 5, 62); // returns false
int QTime::minute() const
Возвращает значение минуты (от 0 до 59).
Возвращает -1, если время недопустимо.
См. также hour(), second() и msec().
int QTime::msec() const
Возвращает значение миллисекунд (от 0 до 999).
Возвращает -1, если время недопустимо.
См. также hour(), minute() и second().
int QTime::msecsSinceStartOfDay() const
Возвращает количество миллисекунд с начала дня, то есть с 00:00:00.
См. также fromMSecsSinceStartOfDay().
int QTime::msecsTo(const QTime &t) const
Возвращает количество миллисекунд от текущего времени до времени t. Если t раньше текущего времени, возвращается отрицательное значение.
Так как QTime измеряет время в течение дня, а в сутках 86400 секунд, результат всегда находится в диапазоне от -86400000 до 86400000 мс.
Возвращает 0, если одно из времён недопустимо.
См. также secsTo(), addMSecs() и QDateTime::msecsTo().
int QTime::restart()
Устанавливает текущее время и возвращает количество миллисекунд, прошедших с момента последнего вызова start() или restart().
Этот метод гарантированно атомен и поэтому очень удобен для повторных измерений. Вызовите start() для начала первого измерения и restart() для каждого последующего измерения.
Обратите внимание, что счётчик обнуляется через 24 часа после последнего вызова start() или restart().
Предупреждение: Если настройки системных часов были изменены с момента последнего вызова start() или restart(), результат неопределён. Это может произойти при включении или выключении летнего времени.
См. также start(), elapsed() и currentTime().
int QTime::second() const
Возвращает значение секунд (от 0 до 59).
Возвращает -1, если время недопустимо.
См. также hour(), minute() и msec().
int QTime::secsTo(const QTime &t) const
Возвращает количество секунд от текущего времени до времени t. Если t раньше текущего времени, возвращается отрицательное значение.
Поскольку QTime измеряет время в течение дня, а в сутках 86400 секунд, результат всегда находится в диапазоне от -86400 до 86400.
secsTo() не учитывает миллисекунды.
Возвращает 0, если одно из времён недопустимо.
См. также addSecs() и QDateTime::secsTo().
bool QTime::setHMS(int h, int m, int s, int ms = 0)
Устанавливает время до часов h, минут m, секунд s и миллисекунд ms.
h должно быть в диапазоне от 0 до 23, m и s — от 0 до 59, а ms — от 0 до 999. Возвращает true , если установленное время допустимо; в противном случае возвращает false.
См. также isValid().
void QTime::start()
Устанавливает текущее время. Это полезно для измерения времени:
QTime t;
t.start();
some_lengthy_task();
qDebug("Time elapsed: %d ms", t.elapsed()); См. также restart(), elapsed() и currentTime().
QString QTime::toString(const QString &format) const
Возвращает время в виде строки. Параметр format определяет формат результирующей строки.
Можно использовать следующие выражения:
| Выражение | Вывод |
|---|---|
| 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). Таким образом, "s.z" сообщает о секундах с полной доступной точностью (миллисекунды) без хвостовых нулей. |
| zzz | дробная часть секунды с точностью до миллисекунды, включая хвостовые нули, если применимо (000 до 999). |
| AP или A | использовать отображение AM/PM. A/AP будет заменено на QLocale::amText() или QLocale::pmText(). |
| ap или a | использовать отображение am/pm. a/ap будет заменено на строчную версию QLocale::amText() или QLocale::pmText(). |
| t | часовой пояс (например, "CEST") |
Все остальные символы входных данных будут игнорироваться. Любая последовательность символов, заключённых в одинарные кавычки, будет обрабатываться как текст и не будет использоваться как выражение. Два последовательных одинарных кавычки ("''") заменяются на один одинарный кавычку в выводе. Форматы без разделителей (например, "HHmm") в настоящее время не поддерживаются.
Примеры строк формата (предполагается, что QTime составляет 14:13:09.042, а системный локаль — en_US)
| Формат | Результат |
|---|---|
| hh:mm:ss.zzz | 14:13:09.042 |
| h:m:s ap | 2:13:9 pm |
| H:m:s a | 14:13:9 pm |
Если время некорректно, будет возвращена пустая строка. Если format пусто, используется стандартный формат "hh:mm:ss".
См. также fromString(), QDate::toString(), QDateTime::toString() и QLocale::toString().
QString QTime::toString(Qt::DateFormat format = Qt::TextDate) const
Это перегруженный метод.
Возвращает время в виде строки. Параметр format определяет формат строки.
Если format равен Qt::TextDate, формат строки — HH:mm:ss; например, 1 секунда до полуночи будет "23:59:59".
Если format равен Qt::ISODate, формат строки соответствует расширенному спецификации ISO 8601 для представлений дат, представленных в виде HH:mm:ss. Чтобы включить миллисекунды в дату ISO 8601, используйте формат Qt::ISODateWithMs, который соответствует HH:mm:ss.zzz.
Если format равен Qt::SystemLocaleShortDate или Qt::SystemLocaleLongDate, формат строки зависит от настроек локали системы. Идентично вызову QLocale::system().toString(time, QLocale::ShortFormat) или QLocale::system().toString(time, QLocale::LongFormat).
Если format равен Qt::DefaultLocaleShortDate или Qt::DefaultLocaleLongDate, формат строки зависит от локали приложения по умолчанию. Это локаль, установленная с помощью QLocale::setDefault(), или системная локаль, если локаль по умолчанию не была установлена. Идентично вызову
QLocale().toString(time, QLocale::ShortFormat) или QLocale().toString(time, QLocale::LongFormat).
Если format равен Qt::RFC2822Date, строка форматируется в соответствии со спецификацией RFC 2822. Пример такого форматирования — "23:59:20".
Если время некорректно, возвращается пустая строка.
См. также fromString(), QDate::toString(), QDateTime::toString() и QLocale::toString().
bool QTime::operator!=(const QTime &t) const
Возвращает true если это время отличается от t; в противном случае возвращает false.
bool QTime::operator<(const QTime &t) const
Возвращает true если это время раньше, чем t; в противном случае возвращает false.
bool QTime::operator<=(const QTime &t) const
Возвращает true если это время раньше или равно t; в противном случае возвращает false.
bool QTime::operator==(const QTime &t) const
Возвращает true если это время равно t; в противном случае возвращает false.
bool QTime::operator>(const QTime &t) const
Возвращает true если это время позже, чем t; в противном случае возвращает false.
bool QTime::operator>=(const QTime &t) const
Возвращает true если это время позже или равно t; в противном случае возвращает false.
Связанные нечленные функции
QDataStream &operator<<(QDataStream &out, const QTime &time)
Записывает time в поток out.
См. также Сериализация типов данных Qt.
QDataStream &operator>>(QDataStream &in, QTime &time)
Читает время из потока in в заданное time.
См. также Сериализация типов данных Qt.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qtime.html