Класс QTime
Класс QTime предоставляет функции для работы со временем. Подробнее...
| Заголовок: | #include <QTime> |
| qmake: | QT += core |
Примечание: Все функции в этом классе являются реентерабельными.
Открытые функции
| QTime(int h, int m, int s = 0, int ms = 0) | |
| QTime() | |
| 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 использует формат 24-часовых часов; он не имеет понятия об AM/PM. В отличие от QDateTime, QTime ничего не знает о часовых поясах или летнем времени.
Объект QTime обычно создаётся, либо явно задавая количество часов, минут, секунд и миллисекунд, либо с помощью статической функции currentTime(), которая создаёт объект QTime, представляющий местное время системы.
Функции hour(), minute(), second() и msec() предоставляют доступ к количеству часов, минут, секунд и миллисекунд времени. Та же информация представлена в текстовом формате функцией toString().
Функции addSecs() и addMSecs() предоставляют время на заданное количество секунд или миллисекунд позже заданного времени. Соответственно, количество секунд или миллисекунд между двумя временами можно найти, используя secsTo() или msecsTo().
QTime предоставляет полный набор операторов для сравнения двух объектов QTime; более раннее время считается меньше позднего; если A.msecsTo(B) положительно, то A < B.
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") |
Любая последовательность символов, заключённая в одинарные кавычки, будет включена в строку вывода дословно (без кавычек), даже если она содержит символы форматирования. Два последовательных одинарных кавычки ("''") заменяются одной кавычкой в выводе. Все остальные символы в строке формата включаются в строку вывода дословно.
Форматы без разделителей (например, "ddMM") поддерживаются, но использовать их следует с осторожностью, так как результирующие строки не всегда надёжно читаемы (например, если "dM" даёт "212", это может означать либо 2 декабря, либо 21 февраля).
Примеры строк формата (предполагая, что 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(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()
Конструирует объект времени по умолчанию. Объект времени по умолчанию может быть QTime(0, 0, 0, 0) (т.е., полночь), за исключением того, что isNull() возвращает true и isValid() возвращает false.
См. также isNull() и isValid().
QTime QTime::addMSecs(int ms) const
Возвращает объект QTime, содержащий время, на ms миллисекунд позже или раньше времени этого объекта (если ms отрицательно).
Обратите внимание, что время переместится, если оно пройдёт полночь. См. addSecs() для примера.
Возвращает время по умолчанию, если это время некорректно.
См. также addSecs(), msecsTo() и QDateTime::addMSecs().
QTime QTime::addSecs(int s) const
Возвращает объект QTime, содержащий время, на s секунд позже или раньше времени этого объекта (если s отрицательно).
Обратите внимание, что время переместится, если оно пройдёт полночь.
Возвращает время по умолчанию, если это время некорректно.
Пример:
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 миллисекунды.
Кроме того, currentTime() увеличивается только в течение каждого дня; он уменьшается на 24 часа каждый раз, когда проходит полночь; и, кроме того, изменения в нём могут не соответствовать прошедшему времени, если произойдёт переход на летнее время.
См. также QDateTime::currentDateTime() и QDateTime::currentDateTimeUtc().
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 с использованием заданного формата format, или некорректное время, если это невозможно.
Обратите внимание, что fromString() использует строку с кодировкой "C" для преобразования миллисекунд в число с плавающей точкой. Если локаль по умолчанию не "C", это может привести к двум попыткам преобразования (если преобразование не удалось для локальной кодировки по умолчанию). Это следует рассматривать как реализационные детали.
См. также toString() и QLocale::toTime().
[static] QTime QTime::fromString(const QString &string, const QString &format)
Возвращает QTime, представленное строкой string, с использованием заданного формата format, или некорректное время, если строку нельзя разобрать.
Эти выражения можно использовать для формата:
| Выражение | Вывод |
|---|---|
| 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, формат строки — ЧЧ:мм:сс; например, время за секунду до полуночи будет "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 &QTime::operator<<(QDataStream &out, const QTime &time)
Записывает time в поток out.
См. также Сериализация типов данных Qt.
QDataStream &QTime::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.13/qtime.html