このページでは

QTime Class

QTime クラスは、時刻関連の機能を提供します。詳細...

ヘッダー: #include <QTime>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

注:このクラスのすべての関数は再入可能である。

QTime の比較

カテゴリ比較可能な型
strongQTime

パブリック関数

QTime()
QTime(int h, int m, int s = 0, int ms = 0)
QTime addMSecs(int ms) const
QTime addSecs(int s) const
int hour() const
bool isNull() const
bool isValid() const
int minute() const
int msec() const
int msecsSinceStartOfDay() const
int msecsTo(QTime t) const
int second() const
int secsTo(QTime t) const
bool setHMS(int h, int m, int s, int ms = 0)
QString toString(const QString &format) const
QString toString(QStringView format) const
QString toString(Qt::DateFormat format = Qt::TextDate) const

静的パブリックメンバー

QTime currentTime()
QTime fromMSecsSinceStartOfDay(int msecs)
QTime fromString(const QString &string, const QString &format)
(since 6.0) QTime fromString(QStringView string, QStringView format)
(since 6.0) QTime fromString(QStringView string, Qt::DateFormat format = Qt::TextDate)
(since 6.0) QTime fromString(const QString &string, QStringView format)
QTime fromString(const QString &string, Qt::DateFormat format = Qt::TextDate)
bool isValid(int h, int m, int s, int ms = 0)
bool operator!=(const QTime &lhs, const QTime &rhs)
bool operator<(const QTime &lhs, const QTime &rhs)
QDataStream &operator<<(QDataStream &out, QTime time)
bool operator<=(const QTime &lhs, const QTime &rhs)
bool operator==(const QTime &lhs, const QTime &rhs)
bool operator>(const QTime &lhs, const QTime &rhs)
bool operator>=(const QTime &lhs, const QTime &rhs)
QDataStream &operator>>(QDataStream &in, QTime &time)

詳細な説明

QTimeオブジェクトは、午前0時からの経過時間(時間、分、秒、ミリ秒)として表現される時刻を保持します。このオブジェクトは、時刻の比較や、ミリ秒数を加算して時刻を操作するための関数を提供します。QTimeオブジェクトは、constへの参照渡しではなく、値渡しで渡す必要があります。これらは単にint をカプセル化したものに過ぎません。

QTimeは24時間制の時刻形式を使用しており、AM/PMの概念はありません。QDateTime とは異なり、QTimeはタイムゾーンや夏時間(DST)に関する情報を一切持ちません。

QTime オブジェクトは通常、時間、分、秒、ミリ秒の値を明示的に指定するか、システムのローカル時間を表す QTime オブジェクトを作成する静的関数currentTime() を使用して生成されます。

hour()、minute()、second()、およびmsec() 関数を使用すると、時刻の時間、分、秒、およびミリ秒の値にアクセスできます。toString() 関数も、同じ情報をテキスト形式で提供します。

addSecs() およびaddMSecs() 関数は、指定された時刻から指定された秒数またはミリ秒数分後の時刻を返します。これに対応して、2つの時刻間の秒数またはミリ秒数は、secsTo() またはmsecsTo() を使用して求めることができます。

QTime には、2 つの QTime オブジェクトを比較するための完全な演算子セットが用意されています。早い時刻は遅い時刻よりも小さいとみなされます。A.msecsTo(B) が正の場合、A < B となります。

QTime オブジェクトは、fromString() を使用してテキスト表現から作成したり、toString() を使用して文字列表現に変換したりすることもできます。文字列形式とのすべての変換は、C ロケールを使用して行われます。ロケールに応じた変換については、QLocale を参照してください。

QDate およびQDateTimeも参照してください 。

メンバ関数のドキュメント

[constexpr] QTime::QTime()

ヌル時刻のオブジェクトを生成します。ヌル時刻の場合、isNull() はtrue を返し、isValid() はfalse を返します。ゼロ時刻が必要な場合は、QTime(0, 0) を使用してください。1日の開始時刻については、QDate::startOfDay() を参照してください。

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

このオブジェクトの時刻よりms ミリ秒後の時刻(ms が負の値の場合はそれより前の時刻)を含むQTime オブジェクトを返します。

時刻が午前0時を過ぎると、時刻が巻き戻される点に注意してください。例については、addSecs() を参照してください。

この時刻が無効な場合は、null の時刻を返します。

addSecs()、msecsTo()、およびQDateTime::addMSecs()も参照してください 。

QTime QTime::addSecs(int s) const

このオブジェクトの時刻よりs 秒後の時刻(s が負の値の場合はそれより前の時刻)を含むQTime オブジェクトを返します。

なお、時刻が深夜0時を過ぎると、時刻は巻き戻されることに注意してください。

この時刻が無効な場合は、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() は 1 日ごとにのみ増加し、深夜 0 時が過ぎるたびに 24 時間ずつ減少します。また、夏時間への移行が挟まる場合、その変化は経過時間と一致しないことがあります。

QDateTime::currentDateTime() およびQDateTime::currentDateTimeUtc()も参照してください 。

[static constexpr] QTime QTime::fromMSecsSinceStartOfDay(int msecs)

その日の開始時刻(00:00:00)からのmsecs の数を時間として設定した、新しいQTime インスタンスを返します。

msecs が有効範囲外の場合、無効なQTime が返されます。

msecsSinceStartOfDay()も参照してください 。

[static] QTime QTime::fromString(const QString &string, const QString &format)

string で表されるQTime を、指定されたformat を使用して返します。文字列を解析できない場合は、無効な時刻を返します。

以下の式をフォーマットに使用できます:

式出力
h先頭のゼロを省いた時間(0~23、または AM/PM 表示の場合は 1~12)
hh先頭のゼロを含む時間(00~23、またはAM/PM表示の場合は01~12)
H先頭のゼロなしの時間(0~23。AM/PM表示の場合も同様)
HH先頭にゼロが付く時間(00~23、AM/PM表示の場合も含む)
m先頭のゼロなしの分(0~59)
mm先頭にゼロが付いた分(00~59)
s先頭のゼロを含まない秒(0~59)
ss秒単位(必要に応じて先頭に0を付ける)(00~59)
z または zz秒の小数部分。通常、小数点に続く形式で、末尾のゼロは不要(0~999)。したがって、"s.z" は、末尾のゼロを必要とせずに、最大3桁の小数部分を持つ秒(ミリ秒単位の精度)に一致します。例えば、"s.z" は、"00.250" または"0.25" のいずれかを、その分の4分の1秒を経過した時刻として認識します。
zzz秒の小数部を3桁で指定し、ミリ秒単位の精度で処理します。必要に応じて末尾のゼロを含めます(000~999)。たとえば、"ss.zzz" は"0.25" を拒否しますが、"00.250" を「その分の4分の1秒が経過した時点」を表すものとして認識します。
AP、A、ap、a、aP または Ap12:00 以前の時刻を示す「AM」またはそれ以降の時刻を示す「PM」のいずれか。大文字と小文字は区別されません。

一重引用符で囲まれた、空ではない任意の文字列も(引用符を除いて)テキストとして扱われ、式としては解釈されません。 連続する 2 つの単一引用符 ("''") は、リテラルシーケンスの開始または終了ではなく、入力と照合される単一引用符として読み取られます。その他のすべての入力文字は、入力文字列内で照合されるリテラルテキストとして扱われます。例:

QTime time = QTime::fromString("1mm12car00", "m'mm'hcarss");
// time is 12:01.00

フォーマットが満たされていない場合、無効なQTime が返されます。

数値フィールドが隣接しており、数字の列を区切る区切り文字がない場合、1桁で表せる一部のフィールドが2桁になっている(表す値が9を超えるため)かどうかについて曖昧さが生じる可能性があります。 そのようなフィールドに2桁を割り当てると他のフィールドに割り当てる桁数が不足し、かつ1桁での読み取りが他のフィールドと整合する場合、この曖昧さは解消できます。 それ以外の場合(1桁のみが許容されるフィールドが複数あり、各フィールドに1桁ずつ割り当てた場合に余剰の桁が生じる場合)、データの一貫性が保たれる限り、後続のフィールドに余剰の桁を割り当てる方法よりも、先行するフィールドに余剰の桁を割り当てる方法が優先されます。例:

QTime time = QTime::fromString("00:710", "hh:ms"); // 7 mins, 10 secs after midnight

この形式で表現されないフィールドはすべてゼロに設定されます。例:

QTime time = QTime::fromString("1.30", "m.s");
// time is 00:01:30.000

注: am または pm の地域固有の表記(AP、ap、Ap、aP、A、または a 形式)を認識させる場合は 、QLocale::system().toTime() を使用してください。

注: フォーマット文字が、それを使用する上記の表の中で最も長い式よりも多く繰り返される場合 、そのフォーマットの部分は、区切り文字なしで複数の式として読み取られます。具体的には、上記の最も長い式が(そのコピー数だけ繰り返される可能性があり)、最後に(より短い式である可能性のある)残りの部分で終わります。 したがって、'HHHHH' は"08088" または"080808" と一致し、時間を 8 に設定します。時間文字列に「070809」が含まれている場合、これは「一致」しますが、一貫性のない結果となり、無効な時間となります。

toString()、QDateTime::fromString()、QDate::fromString()、QLocale::toTime()、およびQLocale::toDateTime()も参照してください 。

[static, since 6.0] QTime QTime::fromString(QStringView string, QStringView format)

この関数は、QTime::fromString() をオーバーロードしています。

この関数はQt 6.0で導入されました。

[static, since 6.0] QTime QTime::fromString(QStringView string, Qt::DateFormat format = Qt::TextDate)

この関数は、QTime::fromString() をオーバーロードしています。

この関数は Qt 6.0 で導入されました。

[static, since 6.0] QTime QTime::fromString(const QString &string, QStringView format)

この関数は、QTime::fromString() をオーバーロードしています。

この関数は Qt 6.0 で導入されました。

[static] QTime QTime::fromString(const QString &string, Qt::DateFormat format = Qt::TextDate)

string で表される時刻を、指定されたformat を使用してQTime として返します。返せない場合は、無効な時刻を返します。

これはオーバーロードされた関数です。

toString() およびQLocale::toTime()も参照してください 。

int QTime::hour() const

時刻の時間部分(0~23)を返します。

時刻が無効な場合は -1 を返します。

minute()、second()、およびmsec()も参照してください 。

[constexpr] bool QTime::isNull() const

時間が null の場合(つまり、QTime オブジェクトがデフォルトコンストラクタを使用して生成された場合)、true を返します。それ以外の場合は 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

この関数は、QTime::isValid() をオーバーロードしています。

int QTime::minute() const

時刻の分(0~59)を返します。

時間が無効な場合は -1 を返します。

hour()、second()、およびmsec()も参照してください 。

int QTime::msec() const

時刻のミリ秒部分(0~999)を返します。

時間が無効な場合は -1 を返します。

hour()、minute()、およびsecond()も参照してください 。

[constexpr] int QTime::msecsSinceStartOfDay() const

その日の開始時刻、つまり 00:00:00 からの経過時間をミリ秒単位で返します。

fromMSecsSinceStartOfDay()も参照してください 。

int QTime::msecsTo(QTime t) const

現在の時刻からt までのミリ秒数を返します。t が現在の時刻より前の場合、返されるミリ秒数は負の値になります。

QTime は1日以内の時間を計測し、1日は86400秒であるため、結果は常に-86400000~86400000ミリ秒の範囲になります。

いずれかの時刻が無効な場合は 0 を返します。

secsTo()、addMSecs()、およびQDateTime::msecsTo()も参照してください 。

int QTime::second() const

時刻の2番目の部分(0~59)を返します。

時間が無効な場合は -1 を返します。

hour()、minute()、およびmsec()も参照してください 。

int QTime::secsTo(QTime t) const

現在の時刻からt までの秒数を返します。t が現在の時刻よりも前の時刻である場合、返される秒数は負の値になります。

QTime は1日単位で時間を計測し、1日は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()も参照してください 。

QString QTime::toString(const QString &format) const

QString QTime::toString(QStringView format) const

時間を表す文字列を返します。

format パラメータは、結果の文字列の形式を決定します。時間が無効な場合、空の文字列が返されます。

以下の式を使用できます:

式出力
h先頭のゼロを除いた時間(0~23、またはAM/PM表示の場合は1~12)
hh先頭のゼロを含む時間(00~23、またはAM/PM表示の場合は01~12)
H先頭のゼロなしの時間(0~23、AM/PM表示の場合も同様)
HH先頭にゼロが付く時間(00~23、AM/PM表示の場合も含む)
m先頭のゼロなしの分(0~59)
mm先頭にゼロが付いた分(00~59)
s先頭のゼロを含まない秒(0~59)
ss秒単位(必要に応じて先頭にゼロを付ける)(00~59)
z または zz秒の小数部分。小数点以下に続き、末尾のゼロは付かない。したがって、"s.z" は、末尾のゼロを省略した状態で(0~999)、利用可能な最大精度(ミリ秒単位)で秒数を報告する。例えば、"s.z" を実行すると、1分の4秒が経過した時点の時刻について、"0.25" という結果が得られる。
zzz秒の小数部分。ミリ秒単位の精度で、必要に応じて末尾のゼロを含みます(000~999)。例えば、"ss.zzz" は、1分の4秒が経過した時点の時刻に対して"00.250" を返します。
AP または AAM/PM 表示を使用します。A/AP は 'AM' または 'PM' に置き換えられます。ローカライズされた形式(QLocale::toString() にのみ関連)では、ロケールに適したテキストが大文字に変換されます。
ap または aam/pm表示を使用します。「a/ap 」は「am」または「pm」に置き換えられます。ローカライズされた形式(QLocale::toString() にのみ関連)では、ロケールに応じたテキストが小文字に変換されます。
aP または ApAM/PM 表示を使用します(バージョン 6.3 以降)。aP/Ap は 'AM' または 'PM' に置き換えられます。ローカライズされた形式(QLocale::toString() にのみ関連)では、ロケールに適したテキスト(QLocale::amText() またはQLocale::pmText() によって返されるもの)が大文字小文字の区別なく使用されます。
tタイムゾーンの略称(例:「CEST」)。タイムゾーンの略称は一意ではないことに注意してください。特に、fromString() ではこれを解析できません。
ttUTC からのタイムゾーンのオフセット。時と分の間にコロンは含めない(例: "+0200")。
ttt時間と分の間にコロンを含んだ、UTCからのタイムゾーンのオフセット(例:「+02:00」)。
ttttQTimeZone::displayName() によって提供される、QTimeZone::LongName 型のタイムゾーン名。これは、使用しているオペレーティングシステムによって異なる場合があります。そのような名前が利用できない場合は、そのゾーンの IANA ID(例: "Europe/Berlin")が使用されることがあります。 この指定では、その日時が夏時間(デイライトセービングタイム)か標準時間かについては示されない場合があり、両者の切り替えによって同じ時間が重複して存在する場合、曖昧さが生じる可能性があります。

注: AM または PM の地域化された形式(AP 、ap 、A 、a 、aP 、またはAp 形式)や、タイムゾーンの表現(t 形式)を取得するには、 QLocale::system() を使用してください。toString()。

タイムゾーンを特定できない場合や、適切な表現形式が利用できない場合は、t 形式による表現を省略することができます。空の文字列が返される条件の詳細については、QTimeZone::displayName()を参照してください。

一重引用符で囲まれた、空でない文字列は、たとえ書式指定文字が含まれていたとしても、出力文字列に(引用符を除いて)そのまま含まれます。 2 つの連続した一重引用符 ("''") は、出力においてリテラルシーケンスの開始や終了を表すのではなく、1 つの一重引用符に置き換えられます。フォーマット文字列内のその他のすべての文字は、出力文字列にそのまま含まれます。

区切り文字のない形式 (例: "hhmm") もサポートされていますが、結果の文字列が必ずしも確実に読み取れるとは限らないため、使用には注意が必要です (例: "Hm" が "212" を生成する場合、02:12 または 21:02 のどちらを意味するかもわかりません)。

フォーマット文字列の例(QTime が14:13:09.042であると仮定)

フォーマット結果
hh:mm:ss.zzz14:13:09.042
h:m:s ap午後 2:13:9
H:m:s a午後 2:13:9

注: フォーマット文字が、それを用いた上記の表の中で最も長い式よりも多くの回数繰り返される場合 、そのフォーマット部分は、区切り文字を挟まずに複数の式として読み取られます。つまり、上記の最も長い式が、そのコピー数だけ繰り返され、最後に短い式となる残りが付く形になります。 したがって、時刻 08:00 に対して'HHHHH' を指定すると、出力には"08088" が含まれます。

fromString()、QDate::toString()、QDateTime::toString()、およびQLocale::toString()も参照してください 。

QString QTime::toString(Qt::DateFormat format = Qt::TextDate) const

時刻を文字列として返します。format パラメータは、文字列の形式を指定します。

format がQt::TextDate の場合、文字列の形式はHH:mm:ssとなります。例えば、深夜0時の1秒前は「23:59:59」となります。

format がQt::ISODate の場合、文字列の形式は、日付の表現に関するISO 8601拡張仕様に準拠し、HH:mm:ssで表されます。ISO 8601形式の日付にミリ秒を含めるには、format Qt::ISODateWithMs を使用してください。これはHH:mm:ss.zzzに相当します。

format がQt::RFC2822Date の場合、文字列はRFC 2822に準拠した形式でフォーマットされます。このフォーマットの例としては「23:59:20」があります。

時間が無効な場合、空の文字列が返されます。

この関数は、QTime::toString() をオーバーロードしています。

fromString()、QDate::toString()、QDateTime::toString()、およびQLocale::toString()も参照してください 。

関連する非メンバー

[constexpr noexcept] bool operator!=(const QTime &lhs, const QTime &rhs)

lhs がrhs と異なる場合は、true を返します。それ以外の場合は、false を返します。

[constexpr noexcept] bool operator<(const QTime &lhs, const QTime &rhs)

lhs がrhs より前の場合、true を返します。それ以外の場合は、false を返します。

QDataStream &operator<<(QDataStream &out, QTime time)

time をout ストリームに書き込みます。

「Qt データ型のシリアライズ」も参照してください 。

[constexpr noexcept] bool operator<=(const QTime &lhs, const QTime &rhs)

lhs がrhs より前であるか、または等しい場合は、true を返します。それ以外の場合は、false を返します。

[constexpr noexcept] bool operator==(const QTime &lhs, const QTime &rhs)

lhs がrhs と等しい場合は `true ` を返し、そうでない場合は `false` を返します。

[constexpr noexcept] bool operator>(const QTime &lhs, const QTime &rhs)

lhs がrhs より新しい場合、true を返します。それ以外の場合は、false を返します。

[constexpr noexcept] bool operator>=(const QTime &lhs, const QTime &rhs)

lhs がrhs 以上である場合はtrue を返し、それ以外の場合はfalse を返します。

QDataStream &operator>>(QDataStream &in, QTime &time)

ストリーム `in ` から時刻を読み取り、指定された `time` に格納します。

「Qtデータ型のシリアライズ」も参照してください 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.