Класс 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") |
Любая непустая последовательность символов в одинарных кавычках будет включена в строку вывода дословно (без кавычек), даже если она содержит символы форматирования. Две последовательные одинарные кавычки ("''") заменяются одной кавычкой в выходной строке. Все остальные символы в строке формата включаются в выходную строку дословно.
END_OF_DOCUMENT_MARKERФорматы без разделителей (например, "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".
Примечание: Если требуются локализованные формы am или pm (форматы AP, ap, A или a), необходимо переключиться на использование QLocale::system().toString() в качестве методов QTime; методы в Qt 6 изменятся на использование английского языка (C locale).
См. также 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()
Создаёт объект времени по умолчанию. Для нулевого времени isNull() возвращает true, а isValid() возвращает false. Если вам нужно время 0, используйте QTime(0, 0). Для начала дня см. QDate::startOfDay().
См. также 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, используя указанный формат, или недействительное время, если это невозможно.
Обратите внимание, что fromString() использует строку, закодированную в формате "C", для преобразования миллисекунд в число с плавающей точкой. Если системный язык не "C", это может привести к двум попыткам преобразования (если преобразование не удалось для системного языка по умолчанию). Это следует рассматривать как реализационное свойство.
Примечание: Поддержка локализованных дат, включая варианты формата Qt::SystemLocaleDate, Qt::SystemLocaleShortDate, Qt::SystemLocaleLongDate, Qt::LocaleDate, Qt::DefaultLocaleShortDate и Qt::DefaultLocaleLongDate, будет удалена в Qt 6. Используйте QLocale::toTime() вместо этого.
См. также 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) |
| 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(). |
Все другие символы ввода будут обрабатываться как текст. Любая непустая последовательность символов, заключённая в одинарные кавычки, также будет обрабатываться (без кавычек) как текст и не будет интерпретироваться как выражение.
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 Примечание: Если используются локализованные формы am или pm (форматы AP, ap, A или a), необходимо переключиться на использование QLocale::system().toTime(), поскольку методы QTime в Qt 6 будут распознавать только английский язык (C locale).
См. также 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(Qt::DateFormat format = Qt::TextDate) const
Это перегруженный метод.
Возвращает время как строку. Параметр format определяет формат строки.
Если format равен Qt::TextDate, формат строки — ЧЧ:мм:сс; например, 1 секунда до полуночи будет "23:59:59".
Если format равен Qt::ISODate, формат строки соответствует расширенному спецификации ISO 8601 для представления дат, представленному как ЧЧ:мм:сс. Для включения миллисекунд в дату ISO 8601 используйте формат Qt::ISODateWithMs, который соответствует ЧЧ:мм:сс.zzz.
Опции format Qt::SystemLocaleDate:, Qt::SystemLocaleShortDate и Qt::SystemLocaleLongDate будут удалены в Qt 6. Их использование следует заменить на QLocale::system().toString(time, QLocale::ShortFormat) или QLocale::system().toString(time, QLocale::LongFormat).
Опции format Qt::LocaleDate, Qt::DefaultLocaleShortDate и Qt::DefaultLocaleLongDate будут удалены в Qt 6. Их использование следует заменить на 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.15/qtime.html