Класс 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.
Документация по функциям-членам
QString QTime::toString(QStringView format) const
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 | Дробная часть секунды после десятичной точки, без trailing нулей (0 до 999). Таким образом, "s.z" сообщает секунды до полной доступной точности (миллисекунд) без trailing нулей. |
| zzz | Дробная часть секунды с точностью до миллисекунд, включая trailing нули, если применимо (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()
Создаёт объект времени null. Для null-времени, isNull() возвращает true, а isValid() возвращает false. Если вам нужно время 0, используйте QTime(0, 0). Для начала дня смотрите QDate::startOfDay().
См. также isNull() и 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 миллисекунду.
Кроме того, 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) |
| 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") |
Все остальные символы входных данных будут обрабатываться как текст. Любая последовательность символов, заключённых в одинарные кавычки, также будет обрабатываться как текст и не будет использоваться как выражение.
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/qt-5.14/qtime.html