Класс 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 |
| QString | toString(QStringView format) 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() предоставляют время, на заданное количество секунд или миллисекунд позже, чем заданное время. Соответственно, количество секунд или миллисекунд между двумя временами можно найти с помощью secsTo() или msecsTo().
Класс QTime может использоваться для измерения интервала времени с помощью функций start(), restart() и elapsed().
Документация по функциям-членам
QString QTime::toString(const QString &format) const
QString QTime::toString(QStringView 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().
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().
[static] 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, если время равно null (т. е., объект QTime был создан с использованием конструктора по умолчанию); в противном случае возвращает false. Время null также является недействительным временем.
См. также 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(Qt::DateFormat format = Qt::TextDate) const
Это перегруженный метод.
Возвращает время в виде строки. Параметр format определяет формат строки.
Если format равен Qt::TextDate, формат строки — ЧЧ:мм:сс; например, 1 секунда до полуночи будет "23:59:59".
Если format равен Qt::ISODate, формат строки соответствует расширенному спецификации ISO 8601 для представления дат, представленных как ЧЧ:мм:сс. Для включения миллисекунд в дату ISO 8601 используйте format Qt::ISODateWithMs, который соответствует ЧЧ:мм:сс.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/archives/qt-5.11/qtime.html