QDateTime Class

QDateTime クラスは日付と時刻の関数を提供します。詳細...

Header: #include <QDateTime>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

このクラスは弱く比較可能です。

注意:このクラスの関数はすべてリエントラントです。

パブリック型

(since 6.7) enum class TransitionResolution { Reject, RelativeToBefore, RelativeToAfter, PreferBefore, PreferAfter, …, LegacyBehavior }
enum class YearRange { First, Last }

パブリック関数

QDateTime()
(until 6.9) QDateTime(QDate date, QTime time, Qt::TimeSpec spec, int offsetSeconds = 0)
QDateTime(QDate date, QTime time, const QTimeZone &timeZone, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)
(since 6.5) QDateTime(QDate date, QTime time, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)
QDateTime(const QDateTime &other)
QDateTime(QDateTime &&other)
~QDateTime()
QDateTime addDays(qint64 ndays) const
(since 6.4) QDateTime addDuration(std::chrono::milliseconds msecs) const
QDateTime addMSecs(qint64 msecs) const
QDateTime addMonths(int nmonths) const
QDateTime addSecs(qint64 s) const
QDateTime addYears(int nyears) const
QDate date() const
qint64 daysTo(const QDateTime &other) const
bool isDaylightTime() const
bool isNull() const
bool isValid() const
qint64 msecsTo(const QDateTime &other) const
int offsetFromUtc() const
qint64 secsTo(const QDateTime &other) const
void setDate(QDate date, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)
void setMSecsSinceEpoch(qint64 msecs)
(until 6.9) void setOffsetFromUtc(int offsetSeconds)
void setSecsSinceEpoch(qint64 secs)
void setTime(QTime time, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)
(until 6.9) void setTimeSpec(Qt::TimeSpec spec)
void setTimeZone(const QTimeZone &toZone, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)
void swap(QDateTime &other)
QTime time() const
(since 6.5) QTimeZone timeRepresentation() const
Qt::TimeSpec timeSpec() const
QTimeZone timeZone() const
QString timeZoneAbbreviation() const
CFDateRef toCFDate() const
QDateTime toLocalTime() const
qint64 toMSecsSinceEpoch() const
NSDate *toNSDate() const
QDateTime toOffsetFromUtc(int offsetSeconds) const
qint64 toSecsSinceEpoch() const
(since 6.4) std::chrono::sys_time<std::chrono::milliseconds> toStdSysMilliseconds() const
(since 6.4) std::chrono::sys_seconds toStdSysSeconds() const
QString toString(QStringView format, QCalendar cal) const
QString toString(const QString &format, QCalendar cal) const
QString toString(QStringView format) const
QString toString(Qt::DateFormat format = Qt::TextDate) const
QString toString(const QString &format) const
(until 6.9) QDateTime toTimeSpec(Qt::TimeSpec spec) const
QDateTime toTimeZone(const QTimeZone &timeZone) const
QDateTime toUTC() const
(since 6.4) QDateTime &operator+=(std::chrono::milliseconds duration)
(since 6.4) QDateTime &operator-=(std::chrono::milliseconds duration)
QDateTime &operator=(const QDateTime &other)

静的パブリック・メンバ

(since 6.5) QDateTime currentDateTime(const QTimeZone &zone)
QDateTime currentDateTime()
QDateTime currentDateTimeUtc()
qint64 currentMSecsSinceEpoch()
qint64 currentSecsSinceEpoch()
QDateTime fromCFDate(CFDateRef date)
QDateTime fromMSecsSinceEpoch(qint64 msecs, const QTimeZone &timeZone)
QDateTime fromMSecsSinceEpoch(qint64 msecs)
(until 6.9) QDateTime fromMSecsSinceEpoch(qint64 msecs, Qt::TimeSpec spec, int offsetSeconds = 0)
QDateTime fromNSDate(const NSDate *date)
QDateTime fromSecsSinceEpoch(qint64 secs, const QTimeZone &timeZone)
QDateTime fromSecsSinceEpoch(qint64 secs)
(until 6.9) QDateTime fromSecsSinceEpoch(qint64 secs, Qt::TimeSpec spec, int offsetSeconds = 0)
(since 6.4) QDateTime fromStdLocalTime(const std::chrono::local_time<std::chrono::milliseconds> &time)
(since 6.4) QDateTime fromStdTimePoint(const std::chrono::local_time<std::chrono::milliseconds> &time)
(since 6.4) QDateTime fromStdTimePoint(const std::chrono::time_point<Clock, Duration> &time)
(since 6.4) QDateTime fromStdTimePoint(std::chrono::time_point<std::chrono::system_clock, std::chrono::milliseconds> time)
(since 6.4) QDateTime fromStdZonedTime(const int &time)
QDateTime fromString(const QString &string, Qt::DateFormat format = Qt::TextDate)
QDateTime fromString(const QString &string, const QString &format, int baseYear, QCalendar cal)
(since 6.0) QDateTime fromString(QStringView string, Qt::DateFormat format = Qt::TextDate)
(since 6.0) QDateTime fromString(QStringView string, QStringView format, QCalendar cal)
(since 6.7) QDateTime fromString(QStringView string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear)
(since 6.0) QDateTime fromString(const QString &string, QStringView format, QCalendar cal)
(since 6.7) QDateTime fromString(const QString &string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear)
QDateTime fromString(const QString &string, const QString &format, QCalendar cal)
(since 6.7) QDateTime fromString(const QString &string, const QString &format, int baseYear = QLocale::DefaultTwoDigitBaseYear)
(since 6.7) QDateTime fromString(QStringView string, QStringView format, int baseYear, QCalendar cal)
(since 6.0) QDateTime fromString(const QString &string, QStringView format, int baseYear, QCalendar cal)
bool operator!=(const QDateTime &lhs, const QDateTime &rhs)
(since 6.4) QDateTime operator+(const QDateTime &dateTime, std::chrono::milliseconds duration)
(since 6.4) QDateTime operator+(std::chrono::milliseconds duration, const QDateTime &dateTime)
(since 6.4) std::chrono::milliseconds operator-(const QDateTime &lhs, const QDateTime &rhs)
(since 6.4) QDateTime operator-(const QDateTime &dateTime, std::chrono::milliseconds duration)
bool operator<(const QDateTime &lhs, const QDateTime &rhs)
QDataStream &operator<<(QDataStream &out, const QDateTime &dateTime)
bool operator<=(const QDateTime &lhs, const QDateTime &rhs)
bool operator==(const QDateTime &lhs, const QDateTime &rhs)
bool operator>(const QDateTime &lhs, const QDateTime &rhs)
bool operator>=(const QDateTime &lhs, const QDateTime &rhs)
QDataStream &operator>>(QDataStream &in, QDateTime &dateTime)

詳細説明

QDateTime オブジェクトは、カレンダーの日付と時計の時刻("datetime")を時間表現に従ってエンコードします。これは、QDate およびQTime クラスの機能を組み合わせたものです。システム時計から現在の日時を読み取ることができます。また、日時を比較したり、秒、日、月、年を追加して日時を操作したりする関数も提供します。

QDateTimeは、local timeUTC 、指定されたoffset from UTC 、または指定されたtime zone 。これらの時間表現はそれぞれ、QTimeZone クラスの適切なインスタンスにカプセル化することができる。例えば、タイムゾーンを "Europe/Berlin "とすると、ドイツで使用されている夏時間 規則が適用される。対照的に、UTCからの固定オフセットである+3600秒は、UTCから1時間進んでおり(通常、ISO標準記法では "UTC+01:00 "と表記される)、夏時間の複雑さはありません。ローカルタイムまたは指定されたタイムゾーンを使用する場合、タイムゾーンの遷移 (below を参照) が考慮されます。QDateTime のtimeSpec() は、4 種類の時間表現のうちどれが使用されているかを示します。そのtimeRepresentation() は、その時間表現の完全な説明をQTimeZone として提供します。

QDateTime オブジェクトは通常、コンストラクタで日付と時刻を明示的に指定するか、currentDateTime() やfromMSecsSinceEpoch() などの静的関数を使用して作成します。日時はsetDate() やsetTime() で変更できます。また、setMSecsSinceEpoch() 関数を使用して、1970年のUTC開始からの時間をミリ秒単位で設定することもできます。fromString() 関数は、文字列と、文字列内の日付を解釈するための日付書式を指定すると、QDateTime を返します。

QDateTime::currentDateTime() は、ローカル時間 (既定値) などの特定の時間表現を基準とした現在の日付と時刻を表す QDateTime を返します。QDateTime::currentDateTimeUtc() は、UTC を基準とした現在の日時を表す QDateTime を返します。これはQDateTime::currentDateTime(QTimeZone::UTC) と同等です。

date() およびtime() 関数は、datetime の日付部分と時刻部分へのアクセスを提供します。同じ情報をテキスト形式で提供するのがtoString() 関数です。

QDateTime には、2 つの QDateTime オブジェクトを比較するための演算子一式が用意されています。

addMSecs() でミリ秒単位、addSecs() で秒単位、addDays() で日単位を指定できます。同様に、addMonths() やaddYears() も使用できる。daysTo() 関数は2つの日付間の日数を返し、secsTo() は2つの日付間の秒数を返し、msecsTo() は2つの日付間のミリ秒数を返します。これらの演算は、夏時間(DST)やその他の時間帯の遷移(該当する場合)を考慮している。

toTimeZone() を使用して、別の時刻表現で日付時刻を再表現する。ローカル時間、UTC、またはUTCからの固定オフセットを表す軽量なQTimeZone を渡すことで、対応する時間表現を使用するようにdatetimeを変換することができます。また、代わりに完全なタイムゾーン(そのtimeSpec() はQt::TimeZone )を渡すことで、それを使用することができます。

備考

注意: QDateTime はうるう秒を考慮しません。

注意 : 文字列フォーマットへの変換と文字列フォーマットからの変換は、すべて C ロケールを使用して行われます。ローカライズされた変換については、QLocale を参照してください。

注意 :グレゴリオ暦には0年という年はありません。その年の日付は無効とみなされる。年-1は、"1 before Christ "または "1 before common era "の年である。CE1年1月1日の前日はBCE1年12月31日である。

注: ローカルタイム(デフォルト)または指定タイムゾーンを使用する場合、transitions に関する問題を解決する必要があります。その結果、このようなQDateTimeインスタンスに対する操作(特にインスタンスの構築を含む)は、UTCまたはUTCからの固定オフセットを使用する場合よりも高くなる可能性があります。

有効な日付の範囲

QDateTimeが表現できる値の範囲は、内部ストレージの実装に依存します。QDateTimeは現在、日付と時刻をエンコードするシリアルmsecs値としてqint64に格納されています。このため、QDate の日付範囲が±20億年であるのに対し、約±2億9,200万年に制限されます。QDateTimeを極端な値で作成する場合は、ストレージがオーバーフローしないように注意する必要があります。サポートされる値の正確な範囲は、使用する時間表現によって異なります。

タイムゾーンの使用

QDateTime はシステムのタイムゾーン情報を使用して、現在のローカル・タイムゾーンと UTC からのオフセットを決定します。システムが正しく設定されていなかったり、最新でない場合、QDateTimeは間違った結果を返します。

QDateTimeも同様に、システムが提供する情報を使用して、UTCからの他のタイムゾーンのオフセットを決定します。この情報が不完全であったり、古かったりすると、QDateTimeは間違った結果を返します。詳しくはQTimeZone のドキュメントを参照してください。

最新のUnixシステムでは、QDateTimeは通常、可能な限り過去の遷移(サマータイムを含む。Windowsでは、システムが過去のタイムゾーンデータをサポートしていないため、特に夏時間を含むタイムゾーンの遷移に関して、過去の正確性は維持されません。しかし、ICUライブラリを使ってQtをビルドすると、QTimeZone 、Unixで使われているのと同じタイムゾーンデータベースが使用できるようになります。

タイムゾーンの遷移

QDateTimeはタイムゾーンの遷移を考慮します。標準時と夏時間(DST)の間の遷移と、ゾーンが標準オフセットを変更したときに生じる遷移の両方を考慮します。例えば、午前2時に移行し、時計が午前3時に進む場合、02:00:00から02:59:59.999まで「欠けた」時間が存在する。このような移行は「スプリングフォワード」と呼ばれ、飛ばされた時間は意味を持たない。逆に「フォールバック」と呼ばれる移行では、ある時間間隔が繰り返され、まず古いゾーン(通常は夏時間)で、次に新しいゾーン(通常は標準時)で繰り返されるため、この時間間隔の時刻は曖昧になります。

一部のゾーンでは、「逆」夏時間を使用し、夏は標準時、冬は夏時間(オフセットを小さくしたもの)を使用している。このようなゾーンでは、スプリングフォワードは春に起こり、1時間スキップしますが、サマータイムからの移行となり、フォールバックは秋の1時間を繰り返しますが、サマータイムへの移行となります。

UTC時間(またはUTCから一定のオフセットがある時間)から変換する場合、どのタイムゾーンでも常に明確で有効な結果が得られます。しかし、日付と時刻を組み合わせて、現地時間や特定のタイムゾーンを基準とした日付時刻を作成する場合、名目上の結果がトランジションに該当する可能性があり、無効または曖昧になります。このような状況が発生する可能性のあるメソッドは、resolve パラメータを取ります。要求されたdatetimeが有効であいまいでない場合、このパラメータは常に無視されます。TransitionResolution を参照してください。Qt 6.7 以前では、LegacyBehavior に相当するものが選択されていました。

スプリングフォワードのスキップされたインターバルでは、要求された時刻をどちらかのオフセットで解釈すると、もう一方のオフセットが使用されていた実際の時刻が得られます。そのため、resolveTransitionResolution::RelativeToBefore を渡すと、実際には遷移後の時刻になり、遷移が起こっていなければ要求された表現になっていたはずです。同様に、resolveTransitionResolution::RelativeToAfter を渡すと、遷移の前の時刻になり、遷移が早く起こっていれば、要求された表現になっていたはずです。

QDateTime が addDay() やaddSecs() のように算術演算を行う場合は、有効な結果を生成するように注意します。例えば、02:00 から 03:00 にスプリングフォワードする日では、01:59:59 に 1 秒を足すと 03:00:00 になります。前日の02:30に1日足すと、移行日の03:30になり、翌日の02:30にaddDay(-1) 、1日引くと、移行日の01:30になる。addSecs() が指定された秒数だけ時刻をずらすのに対して、addDays() は日付を調整し、そうしなければ無効な結果が得られる場合にのみ時刻を調整する。スプリングフォワードの前日の03:00にaddDays(1) を適用すると、移行日の03:00は前者の23時間後であるにもかかわらず、単に03:00となります。しかし、addSecs(24 * 60 * 60) は移行日の04:00となり、これは24時間後だからです。一般的な遷移では、23時間や25時間の日もある。

システムtime_t が表現できる日付時間(32ビットtime_t を持つシステムでは1901-12-14から2038-01-18まで、64ビットの場合はQDateTimeが表現できる全範囲)については、標準のシステムAPIを使用してUTCからのローカル時間のオフセットを決定します。これらのシステムAPIで扱われない日付時間(time_t の範囲内のものも含まれる可能性がある)については、QTimeZone::systemTimeZone ()が利用可能であれば利用されるか、推定するための最善の努力がなされる。いずれにせよ、使用されるオフセット情報はシステムに依存し、不完全であったり、過去の日付については歴史的に不正確であったりする可能性がある。さらに、将来の日付については、その日付が来る前に、現地のタイムゾーンのオフセットやサマータイムのルールが変更される可能性があります。

全日移行

国際日付変更線を移動させるために、丸1日をスキップしたり、繰り返したりするゾーンもあります。このような場合、daysTo()は、重複やずれに気づかず、単に暦日の差を使用する。対照的に、msecsTo()とsecsTo()は、真の時間間隔を知っている。同様に、addMSecs ()とaddSecs ()は経過時間に直接対応し、addDays ()、addMonths ()、addYears ()は公称暦に従う。ギャップや重複に着地する際に、重複や省略による曖昧さや無効性を解決する必要がある場合は別である。

注: ユリウス暦からグレゴリオ暦への変更など、暦の変更時に「失われた」日は、QDateTimeには影響しない。2つの暦では日付の表記が異なりますが、暦の変更に伴う連続した日は、QDate インスタンスによって表記されます。対照的に、1日をスキップしたり重複させたりするゾーンは、日付ではなく時刻の 記述を24時間単位で変更することになる。

UTCからのオフセット

UTCからのオフセットは、グリニッジの東側で秒単位で計測される。特定の日の正午など、特定の日付と時刻が示す瞬間は、使用される時間表現によって異なります。UTCからのオフセットが大きいほど早い瞬間を表し、オフセットが小さいほど遅い瞬間を表します。

UTCからのオフセットに明示的なサイズ制限はありませんが、toString()やfromString()メソッドで±hh:mm形式を使用する場合は暗黙の制限があります。現在のところ、±14 時間の範囲外のオフセットを持つタイムゾーンはなく、既知のオフセットはすべて 5 分の倍数である。歴史的なタイムゾーンにはもっと広い範囲があり、秒を含むオフセットがあるかもしれない。

QDateQTimeQDateTimeEditQTimeZoneも参照のこと

メンバ型ドキュメント

[since 6.7] enum class QDateTime::TransitionResolution

この列挙型は、Timezone transitions に該当する datetime の組み合わせを解決するために使用される。

現地時間または夏時間を含むタイムゾーンで指定された datetime を作成するとき、あるいはsetDate()、setTime()、setTimeZone() で修正するとき、指定されたパラメータは、そのタイムゾーンでは意味を持たないか、あるいは2つの意味を持つ時間表現を意味するかもしれない。そのような時間表現は、遷移の中にあると記述される。いずれの場合も、単に無効なdatetimeを返すことで、その操作が定義されて いないことを示すことができる。曖昧な場合は、2つの時間のうちどちらかを選択することもできる。意味がない場合は、どちらか一方を選択することができます。例えば、より早い時間から進む場合、問題の早い時間から指定された時間だけ経った移行後の時間を選択することができる。ここで指定するオプションは、そのような選択をどのように行うかを設定する。

定数説明
QDateTime::TransitionResolution::Reject0トランジション内の任意の時間を無効として扱います。本当にそうであるか、あいまいであるかのどちらかである。
QDateTime::TransitionResolution::RelativeToBefore1トランジション前の時間からステップフォワードするように時間を選択する。これは、トランジション前に有効なオフセットを使用して要求された時間を解釈し、必要であれば、その結果を、結果として得られる時間に有効なオフセットに変換する。
QDateTime::TransitionResolution::RelativeToAfter2トランジション後の時間から後方にステップするように時間を選択する。これは、トランジション後に有効なオフセットを使用して要求された時間を解釈し、必要であれば、結果を結果時刻に有効なオフセットに変換する。
QDateTime::TransitionResolution::PreferBefore3トランジション前の時間を選択する、
QDateTime::TransitionResolution::PreferAfter4移行後の時間を選択する。
QDateTime::TransitionResolution::PreferStandard5標準時側の時刻を選択します。
QDateTime::TransitionResolution::PreferDaylightSaving6夏時間] 切り替えの夏時間側の時刻を選択します。
QDateTime::TransitionResolution::LegacyBehaviorRelativeToBeforeRelativeToBefore のエイリアスで、TransitionResolution パラメーターのデフォルトとして使用されます。

addDays(),addMonths(),addYears() では、正の調整を追加する場合はRelativeToBefore を、負の調整を追加する場合はRelativeToAfter を使用します。

注: 夏時間がUTCからのオフセットを増加させるタイムゾーン("ポジティブDST "として知られている)では、PreferStandardはRelativeToAfterのエイリアスであり、PreferDaylightSavingはRelativeToBeforeのエイリアスである。サマータイムのメカニズムが冬のUTCからのオフセットを減少させる("負のDST "として知られている)タイムゾーンでは、オペレーティングシステムが(ほとんどのプラットフォームでそうであるように)日付時刻がDSTであるか標準時であるかを報告する場合、その逆が適用されます。Qt::TimeZone 、移行時間が利用できないプラットフォームもあるため、QTimeZone 、UTCからのオフセットが小さい方を標準時と推定せざるを得ない。

以下の表は、QDateTime コンストラクターが、ローカルタイムが02:00と03:00の間に遷移する日の 02:30のリクエストを、公称標準時LSTと夏時間LDTの2つの側で、どのように解決するか を、考えられるさまざまなケースで示したものである。遷移のタイプは、1時間スキップすることも、繰り返すこともできる。移行の種類とパラメータ(resolve )の値によって、指定された日付の実際の時刻が選択される。まず、一般的な夏時間の場合である:

02:00-03:00resolve選択された
LSTスキップLDT相対時間前03:30 LDT
LSTスキップLDT相対時間01:30 LST
LSTスキップLDTPreferBefore01:30 LST
LSTスキップLDT後を優先03:30 LDT
LSTスキップLDT標準を優先01:30 LST
LSTスキップLDT夏時間を優先03:30 LDT
LDT繰り返すLST相対時間前02:30 LDT
LDTリピートLST相対時間後02:30 LST
LDT繰り返しLSTPreferBefore02:30 LDT
LDTリピートLSTプリファーアフター02:30 LST
LDT繰り返すLST標準を優先02:30 LST
LDTリピートLSTデイライトセービングを優先02:30 LDT

次に、マイナス夏時間の場合、冬はLDTを使用し、夏は1時間スキップしてLSTに移行し、冬に戻るときに1時間繰り返す:

LDTスキップLST相対時間前03:30 LST
LDTスキップLST相対時間01:30 LDT
LDTスキップLSTPreferBefore01:30 LDT
LDTスキップLST後を優先03:30 LST
LDTスキップLST標準を優先03:30 LST
LDTスキップLSTデイライトセービングを優先01:30 LDT
LST繰り返すLDT前日比02:30 LST
LST繰り返しLDT相対時間02:30 LDT
LST繰り返しLDTPreferBefore02:30 LST
LSTリピートLDTプリファーアフター02:30 LDT
LSTリピートLDT標準を優先02:30 LST
LSTリピートLDT夏時間を優先02:30 LDT

Rejectを使用すると、関連するQDateTime APIに無効なdatetimeオブジェクトを返すように促すことができます。そのため、コード自身で遷移を処理することができます。たとえば、ユーザーが選択したdatetimeが遷移区間にあることを警告し、競合やあいまいさを解決する機会を提供することができます。これを使用するコードは、自分自身(またはユーザー)の解決に使用する関連情報を決定するために、上記の他のオプションが有用であることに気づくかもしれません。トランジションの開始または終了、あるいはトランジションの瞬間そのものが正しい解決である場合、QTimeZone'のトランジションAPIを使用してその情報を得ることができます。secsTo ()を使って、前日と翌日の正午の間の実際の時間を測定することで、トランジションが繰り返されるインターバルなのか、スキップされるインターバルなのかを判断することができる。結果は、スキップされた間隔(スプリング・フォワードなど)の場合は48時間未満となり、繰り返された間隔(フォールバックなど)の場合は48時間以上となる。

注意: Reject以外の解決法が指定された場合、可能であれば有効なQDateTime オブジェクトが返される。要求された日付時刻がギャップに含まれる場合、返される日付時刻は、要求されたtime() を持たない - 場合によっては、丸一日スキップされた場合はdate() を持つ。したがって、date() とtime() を要求されたものと比較することで、ギャップが発生したことを検出することができます。

他のdatetimeソフトウェアとの関係

Pythonプログラミング言語のdatetime APIには、RelativeToBefore (fold = True) とRelativeToAfter (fold = False) に対応するfold パラメータがあります。

JavaScriptのDate を置き換えるためのTemporal の提案は、disambiguation パラメーターの値として、遷移を解決する方法について4つの選択肢を提供しています。その'reject' は例外を発生させますが、これはReject が無効な結果を生成することにほぼ対応します。'earlier''later' のオプションはPreferBeforePreferAfter に対応します。'compatible' のオプションはRelativeToBefore (と Python のfold = True) に対応します。

この列挙型は Qt 6.7 で導入されました。

Timezone transitions および QDateTime::TransitionResolutionも参照してください

enum class QDateTime::YearRange

この列挙型は、QDateTime で表現可能な年(グレゴリオ暦)の範囲を記述します:

定数説明
QDateTime::YearRange::First-292275056この年の後半部分が表現可能
QDateTime::YearRange::Last+292278994この年の前の部分が表現可能

これらの2つの年の間のすべての日付も表現可能である。ただし、グレゴリオ暦にはゼロ年がないことに注意。

注: QDate は、より広い範囲の年の日付を表すことができる。QDateTime 、1970年から2億9,200万年後まで対応可能だからである。

isValid() およびQDateも参照のこと

メンバ関数ドキュメント

QString QDateTime::toString(QStringView format, QCalendar cal) const

QString QDateTime::toString(const QString &format, QCalendar cal) const

datetimeを文字列として返す。format パラメータは、結果の文字列の書式を決定する。cal が指定された場合、日付を表すのに使用される暦が決定されます。デフォルトはグレゴリオ暦です。Qt 5.14以前では、cal パラメータはなく、常にグレゴリオ暦が使用されていました。format パラメータでサポートされている時刻と日付の指定子については、それぞれQTime::toString() とQDate::toString() を参照してください。

一重引用符で囲まれた文字列は、フォーマット文字を含んでいても、(引用符を 取り除いた)出力文字列にそのまま含まれる。連続する2つの一重引用符("''")は、出力では一重引用符に置き換えられる。書式文字列内のその他の文字は、出力文字列にそのまま含まれます。

セパレータのない書式(例えば "ddMM")はサポートされているが、結果の文字列が必ずしも確実に読めるとは限らないので、注意して使用しなければならない(例えば、"dM "が "212 "を生成する場合、それは12月2日を意味することもあれば、2月21日を意味することもある)。

フォーマット文字列の例(QDateTime は2001年5月21日 14:13:09.120とする):

書式結果
dd.MM.yyyy21.05.2001
ddd MMMM d yy5月21日(火) 01
hh:mm:ss.zzz14:13:09.120
hh:mm:ss.z14:13:09.12
h:m:s ap2:13:9 pm

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

注意: 曜日名、月名、AM/PMインジケータは英語(Cロケール)で表示されます。ローカライズされた月日名やAM/PMを取得するには、QLocale::system().toDateTime() を使用します。

fromString(),QDate::toString(),QTime::toString(),QLocale::toString()も参照

[noexcept] QDateTime::QDateTime()

NULLのdatetimeを作成します。

null datetime は無効であり、その日付と時刻は無効です。

isValid()、setMSecsSinceEpoch()、setDate()、setTime()、setTimeZone()も参照

[until 6.9] QDateTime::QDateTime(QDate date, QTime time, Qt::TimeSpec spec, int offsetSeconds = 0)

この関数はバージョン6.9で廃止予定です。

QDateTime(date, time) またはQDateTime(date, time, QTimeZone::fromSecondsAheadOfUtc(offsetSeconds)) を使用してください。

指定されたdatetime を用いて、specoffsetSeconds の秒による時刻表現を用いて datetime を構築します。

date が有効でtime が有効でない場合、時刻は真夜中に設定されます。

specQt::OffsetFromUTC でない場合、offsetSeconds は無視される。specQt::OffsetFromUTC で、offsetSeconds が 0 の場合、timeSpec() はQt::UTC 、すなわち 0 秒のオフセットに設定される。

specQt::TimeZone の場合、spec はQt::LocalTime 、つまり現在のシステム・タイムゾーンに設定される。Qt::TimeZone datetimeを作成するには、正しいコンストラクタを使用してください。

date が QDateTime で表現可能な日付の範囲外の場合、結果は無効です。specQt::LocalTime で、システムのタイムゾーンが指定された日時をスキップした場合、結果は無効です。

QDateTime::QDateTime(QDate date, QTime time, const QTimeZone &timeZone, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)

指定されたdatetime で、timeZone で記述された時間表現を使用して、datetime を構築します。

date が有効でtime が無効な場合、時刻は真夜中に設定される。timeZone が無効な場合、そのdatetimeは無効になります。datetime が、timeZone の遷移に近い瞬間を記述している場合、resolve は、その状況をどのように解決するかを制御します。

注意: Qt 6.7より前のバージョンでは、この関数にresolve パラメータがなかったため、遷移に関する曖昧さを解決する方法がありませんでした。

[since 6.5] QDateTime::QDateTime(QDate date, QTime time, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)

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

指定されたdatetime を用いて、ローカル時間を用いてdatetimeを構築する。

date が有効でtime が有効でない場合、時刻として真夜中が使用されます。datetime がローカル時間の遷移に近い瞬間を記述している場合、resolve はその状況をどのように解決するかを制御します。

注: Qt 6.7より前のバージョンでは、この関数にはresolve パラメータがなく、遷移に関連する曖昧さを解決する方法がありませんでした。

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

[noexcept] QDateTime::QDateTime(const QDateTime &other)

other datetimeのコピーを作成します。

[noexcept] QDateTime::QDateTime(QDateTime &&other)

一時的なother datetimeの内容をこのオブジェクトに移動し、other を指定されていない(しかし適切な)状態にします。

[noexcept] QDateTime::~QDateTime()

datetimeを破棄する。

QDateTime QDateTime::addDays(qint64 ndays) const

このオブジェクトのdatetimeよりndays 日後のdatetimeを含むQDateTime オブジェクトを返します(ndays が負の場合はそれ以前のdatetime)。

timeSpec() がQt::LocalTime またはQt::TimeZone で、結果の日付と時刻が標準時から夏時間に移行する時間帯に含まれる場合、結果はこのずれを超えて、移行する方向になります。移行が午前2時で、時計が午前3時に進む場合、午前2時と午前3時の間を狙った結果は、午前2時より前(ndays < 0 の場合)か、午前3時より後(それ以外の場合)になるように調整される。

daysTo()、addMonths()、addYears()、addSecs()、Timezone transitionsも参照のこと

[since 6.4] QDateTime QDateTime::addDuration(std::chrono::milliseconds msecs) const

このオブジェクトの日付よりmsecs ミリ秒後の日付(msecs が負の場合はそれ以前)を含むQDateTime オブジェクトを返します。

このdatetimeが無効な場合は、無効なdatetimeが返されます。

注: std::chrono::months またはstd::chrono::years で表現された継続時間を追加しても、addMonths ()またはaddYears ()を使用して得られる結果と同じ結果は得られない。後者はグレゴリオ暦の月/年の定義を使用します。

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

addMSecs(),msecsTo(),addDays(),addMonths(),addYears()も参照してください

QDateTime QDateTime::addMSecs(qint64 msecs) const

このオブジェクトのdatetimeよりmsecs ミリ秒後のdatetimeを含むQDateTime オブジェクトを返します(msecs が負の場合はそれ以前)。

このdatetimeが無効な場合は、無効なdatetimeが返されます。

addSecs()、msecsTo()、addDays()、addMonths()、addYears()も参照

QDateTime QDateTime::addMonths(int nmonths) const

このオブジェクトの日付よりnmonths ヶ月後の日付(nmonths が負の場合はそれ以前)を含むQDateTime オブジェクトを返します。

timeSpec() がQt::LocalTime またはQt::TimeZone で、結果の日付と時刻が標準時から夏時間に移行する時間帯に含まれる場合、結果はこのずれをちょうど超えて、移行する方向になります。移行が午前2時で、時計が午前3時に進む場合、午前2時と午前3時の間を狙った結果は、午前2時より前(nmonths < 0 の場合)か、午前3時より後(それ以外の場合)になるように調整される。

daysTo()、addDays()、addYears()、addSecs()、Timezone transitionsも参照のこと

QDateTime QDateTime::addSecs(qint64 s) const

このオブジェクトの日付よりs 秒後の日付(s が負の場合はそれ以前)を含むQDateTime オブジェクトを返します。

このdatetimeが無効な場合は、無効なdatetimeが返されます。

addMSecs()、secsTo()、addDays()、addMonths()、addYears()も参照

QDateTime QDateTime::addYears(int nyears) const

このオブジェクトの日付よりnyears 年後の日付(nyears が負の場合はそれ以前)を含むQDateTime オブジェクトを返します。

timeSpec() がQt::LocalTime またはQt::TimeZone で、結果の日付と時刻が標準時から夏時間に移行する時間帯に含まれる場合、結果はこのずれをちょうど超えて、変更される方向になります。移行が午前2時で、時計が午前3時に進む場合、午前2時と午前3時の間を狙った結果は、午前2時より前(nyears < 0 の場合)か、午前3時より後(それ以外の場合)になるように調整される。

daysTo()、addDays()、addMonths()、addSecs()、Timezone transitionsも参照のこと

[static, since 6.5] QDateTime QDateTime::currentDateTime(const QTimeZone &zone)

zone で説明されている時間表現を使用して、システム時計の現在の日時を返す。zone が省略された場合、ローカル時間が使用されます。

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

currentDateTimeUtc(),QDate::currentDate(),QTime::currentTime(),toTimeSpec()も参照してください

[static] QDateTime QDateTime::currentDateTime()

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

[static] QDateTime QDateTime::currentDateTimeUtc()

システムクロックの現在の日時を UTC で表現して返します。

currentDateTime(QTimeZone::UTC) と同じ。

currentDateTime()、QDate::currentDate()、QTime::currentTime()、toTimeSpec()も参照

[static noexcept] qint64 QDateTime::currentMSecsSinceEpoch()

1970年開始からの現在のミリ秒数をUTCで返します。

この数値はPOSIXのtime_t変数と似ているが、秒ではなくミリ秒単位で表される。

currentDateTime()、currentDateTimeUtc()、toTimeSpec()も参照

[static noexcept] qint64 QDateTime::currentSecsSinceEpoch()

1970年の開始からの秒数をUTCで返す。

この数値は POSIX の time_t 変数と同じである。

currentMSecsSinceEpoch()も参照

QDate QDateTime::date() const

datetimeの日付部分を返す。

setDate()、time()、timeRepresentation()も参照

qint64 QDateTime::daysTo(const QDateTime &other) const

この日付からother の日付までの日数を返します。日数は、この datetime からother datetime までの間に 0 時に達した回数としてカウントされます。つまり、23:55から翌日の0:05までの10分の差が1日とカウントされます。

other datetimeがこのdatetimeより早い場合、返される値は負になります。

QDateTime startDate(QDate(2012, 7, 6), QTime(8, 30, 0));
QDateTime endDate(QDate(2012, 7, 7), QTime(16, 30, 0));
qDebug() << "Days from startDate to endDate: " << startDate.daysTo(endDate);

startDate = QDateTime(QDate(2012, 7, 6), QTime(23, 55, 0));
endDate = QDateTime(QDate(2012, 7, 7), QTime(0, 5, 0));
qDebug() << "Days from startDate to endDate: " << startDate.daysTo(endDate);

qSwap(startDate, endDate); // Make endDate before startDate.
qDebug() << "Days from startDate to endDate: " << startDate.daysTo(endDate);

addDays()、secsTo()、msecsTo()も参照

[static] QDateTime QDateTime::fromCFDate(CFDateRef date)

CFDatedate のコピーを含む新しいQDateTime を構築します。

toCFDate()も参照

[static] QDateTime QDateTime::fromMSecsSinceEpoch(qint64 msecs, const QTimeZone &timeZone)

timeZone で指定された 1970 年の開始時刻から、UTC で指定されたミリ秒数msecs 後を表す datetime を返します。デフォルトの時間表現はローカル時間である。

QDateTime の有効範囲外であるmsecs には、負の値も正の値もあり得ることに注意。これらの値に対するこの関数の動作は未定義である。

fromSecsSinceEpoch ()、toMSecsSinceEpoch ()、setMSecsSinceEpoch)も参照

[static] QDateTime QDateTime::fromMSecsSinceEpoch(qint64 msecs)

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

[static, until 6.9] QDateTime QDateTime::fromMSecsSinceEpoch(qint64 msecs, Qt::TimeSpec spec, int offsetSeconds = 0)

この関数はバージョン6.9で廃止予定です。

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

代わりにQTimeZone を渡すか、specoffsetSeconds を省略します。

specoffsetSeconds で指定された、1970年のUTCにおける開始時刻から、指定されたミリ秒数msecs 後を表すdatetimeを返します。

msecs には、QDateTime の有効範囲外の値(負の値も正の値も)があり得ることに注意。これらの値に対するこの関数の動作は未定義である。

specQt::OffsetFromUTC でない場合、offsetSeconds は無視される。specQt::OffsetFromUTCoffsetSeconds が 0 の場合、UTC のオフセットが 0 であるため、Qt::UTCspec として使用される。

specQt::TimeZone の場合、代わりにQt::LocalTime が使用される。これは、現在のシステムタイムゾーンを使用するのと同じである(ただし、表現は異なる)。

fromSecsSinceEpoch ()、toMSecsSinceEpoch ()、setMSecsSinceEpoch)も参照

[static] QDateTime QDateTime::fromNSDate(const NSDate *date)

NSDatedate のコピーを含む新しいQDateTime を構築する。

toNSDate()も参照

[static] QDateTime QDateTime::fromSecsSinceEpoch(qint64 secs, const QTimeZone &timeZone)

timeZone で指定された 1970 年の開始時刻から、UTC で指定された秒数secs 後を表す datetime を返します。デフォルトの時間表現はローカル時間である。

QDateTime の有効範囲外であるsecs には、負の値も正の値もあり得ることに注意。これらの値に対するこの関数の動作は未定義である。

fromMSecsSinceEpoch ()、toSecsSinceEpoch ()、setSecsSinceEpoch)も参照

[static] QDateTime QDateTime::fromSecsSinceEpoch(qint64 secs)

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

[static, until 6.9] QDateTime QDateTime::fromSecsSinceEpoch(qint64 secs, Qt::TimeSpec spec, int offsetSeconds = 0)

この関数はバージョン6.9で廃止予定です。

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

代わりにQTimeZone を渡すか、specoffsetSeconds を省略します。

specoffsetSeconds で指定された、1970年のUTCにおける開始時刻から、指定された秒数secs を経過した時刻を表す datetime を返します。

QDateTime の有効範囲外であるsecs には、負の値も正の値もあり得ることに注意。これらの値に対するこの関数の動作は未定義である。

specQt::OffsetFromUTC でない場合、offsetSeconds は無視される。specQt::OffsetFromUTCoffsetSeconds が 0 の場合、UTC のオフセットが 0 であるため、Qt::UTCspec として使用される。

specQt::TimeZone の場合、その代わりにQt::LocalTime が使用され、現在のシステムタイムゾーンを使用するのと同じことになる(ただし、表現は異なる)。

fromMSecsSinceEpoch()、toSecsSinceEpoch()、setSecsSinceEpoch()も参照

[static, since 6.4] QDateTime QDateTime::fromStdLocalTime(const std::chrono::local_time<std::chrono::milliseconds> &time)

日付と時刻がtime で表されるミリ秒数で、ローカル時間(Qt::LocalTime )の 1970-01-01T00:00:00.000 からカウントされる datetime を構築します。

注: この関数は C++20 を必要とします。

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

toStdSysMilliseconds() およびfromMSecsSinceEpoch()も参照してください

[static, since 6.4] QDateTime QDateTime::fromStdTimePoint(const std::chrono::local_time<std::chrono::milliseconds> &time)

日付と時刻が、ローカル時間の 1970-01-01T00:00:00.000 から数えてtime で表されるミリ秒数である datetime を構築します (Qt::LocalTime)。

注: この関数は C++20 を必要とします。

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

toStdSysMilliseconds() およびfromMSecsSinceEpoch()も参照してください

[static, since 6.4] template <typename Clock, typename Duration> QDateTime QDateTime::fromStdTimePoint(const std::chrono::time_point<Clock, Duration> &time)

Qt::UTC を時刻表現として使用し、time と同じ時点を表す datetime を構築します。

time の時計はstd::chrono::system_clock と互換性がなければなりません;特に、std::chrono::clock_cast でサポートされている変換が存在しなければなりません。変換後、結果の継続時間型はstd::chrono::milliseconds に変換可能でなければならない。

そうでない場合、呼び出し元は、この関数への入力が上記の制約を満たすように、std::chrono::system_clock に対する必要なクロック変換と、継続時間型(cast/round/floor/ceil/...)の必要な変換を行わなければならない。

注: この関数は C++20 を必要とします。

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

toStdSysMilliseconds() およびfromMSecsSinceEpoch()も参照してください

[static, since 6.4] QDateTime QDateTime::fromStdTimePoint(std::chrono::time_point<std::chrono::system_clock, std::chrono::milliseconds> time)

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

Qt::UTC を時間表現として使用して、time と同じ時点を表す datetime を構築します。

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

[static, since 6.4] QDateTime QDateTime::fromStdZonedTime(const int &time)

time と同じ時点を表す datetime を構築します。結果はtime のタイムゾーンで表現されます。

注意: この関数は C++20 を必要とします。

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

QTimeZonetoStdSysMilliseconds()、fromMSecsSinceEpoch()も参照してください

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

指定されたformat を使用して、string で表されるQDateTime を返すか、それが不可能な場合は無効な datetime を返します。

Qt::TextDate に関する注意 : 英語の短い月名 (例えば、短縮形の "Jan" や長い月名の "January") だけが認識されます。

toString() およびQLocale::toDateTime()も参照

[static] QDateTime QDateTime::fromString(const QString &string, const QString &format, int baseYear, QCalendar cal)

与えられたformat を使用して、string で表されるQDateTime を返します。 文字列が解析できない場合は無効な datetime を返します。

暦が与えられていればcal を使用し、そうでなければグレゴリオ暦を使用します。

format 、西暦の下2桁のみを指定した場合、baseYear から始まる100年が最初に検討される候補となる。6.7より前にはbaseYear パラメータはなく、常に1900が使われていた。これはbaseYear のデフォルトであり、当時から1999年までの年号が選択される。場合によっては、与えられたすべてのフィールドと一致する結果を得るために、他のフィールドによって次の世紀や前の世紀が選択されることもある。詳細はQDate::fromString()を参照。

このメソッドでは、QDate::fromString() およびQTime::fromString() で日付と時刻の一部を表す書式文字列として認識される式に加えて、以下の式もサポートしています:

出力
tタイムゾーン (オフセット、名前、"Z" または "UTC" 接頭辞付きオフセット)
ttオフセット形式のタイムゾーンで、時間と分の間にコロンを含まないもの(例:"+0200")
tttオフセット形式のタイムゾーンで、時と分の間にコロンを含むもの(例:"+02:00")
ttttタイムゾーン名(例:"Europe/Berlin")。認識される名前は、QTimeZone で既知のもので、使用するオペレーティング・システムによって異なる場合がある。

t'書式指定子がない場合、システムのローカルタイムゾーンが使用される。他のすべてのフィールドのデフォルトについては、QDate::fromString() とQTime::fromString() を参照のこと。

例えば

QDateTime dateTime = QDateTime::fromString("1.30.1", "M.d.s");
// dateTime is January 30 in 1900 at 00:00:01.
dateTime = QDateTime::fromString("12", "yy");
// dateTime is January 1 in 1912 at 00:00:00.

その他の入力文字はすべてテキストとして扱われる。一重引用符で囲まれた、空でない文字列もテキストとして扱われ(引用符は 取り除かれ)、式としては解釈されない。

QTime time1 = QTime::fromString("131", "HHh");
// time1 is 13:00:00
QTime time1 = QTime::fromString("1apA", "1amAM");
// time1 is 01:00:00

QDateTime dateTime2 = QDateTime::fromString("M1d1y9800:01:02",
                                            "'M'M'd'd'y'yyhh:mm:ss");
// dateTime is 1 January 1998 00:01:02

書式を満たさない場合、無効なQDateTime 。フォーマットは満たしているが、string が無効な日時を表している場合(タイムゾーン遷移によってスキップされたギャップなど)、有効なQDateTime が返される。

先頭のゼロがない式(d、M、h、m、s、z)は、貪欲になります。つまり、2桁の数字(zの場合は3桁の数字)を使用し、それが範囲外であったり、他のセクションのために桁数が少なすぎたりしても、それを使用します。

QDateTime dateTime = QDateTime::fromString("130", "Mm"); // invalid

これは1 January 00:30.00を意味する可能性もあるが、Mは2桁を使用する。

string のフィールドが正しく指定されていないと、無効なQDateTime が返されます。例えば、以下のコードを考えてみましょう。2桁の西暦12が1912と読み取られています(すべてのフィールドのデフォルトは以下の表を参照してください):

QString string = "Monday, 23 April 12 22:51:41";
QString format = "dddd, d MMMM yy hh:mm:ss";
QDateTime invalid = QDateTime::fromString(string, format);

正しいコードは

QString string = "Tuesday, 23 April 12 22:51:41";
QString format = "dddd, d MMMM yy hh:mm:ss";
QDateTime valid = QDateTime::fromString(string, format);

注: 曜日名、月名、AM/PMインジケータは英語(Cロケール)で指定しなければならない。ローカライズされた月日名やAM/PMを認識したい場合は、QLocale::system().toDateTime() を使用する。

注意: ある書式文字が、それを使用した上表の最長の表現よりも多く繰り返される場合、この書式の部分は、それらの間に区切り文字のない複数の表現として読み取られます。したがって、'tttttt' は、"Europe/BerlinEurope/Berlin" にマッチし、ゾーンをベルリン時間に設定する。もし、datetime文字列に "Europe/BerlinZ "が含まれていれば、"マッチ "するが、一貫性のない結果となり、無効なdatetimeとなる。

toString(),QDate::fromString(),QTime::fromString(),QLocale::toDateTime()も参照のこと

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

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

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

[static, since 6.0] QDateTime QDateTime::fromString(QStringView string, QStringView format, QCalendar cal)

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

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

[static, since 6.7] QDateTime QDateTime::fromString(QStringView string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear)

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

デフォルトのQCalendar を使用します。

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

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

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

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

[static, since 6.7] QDateTime QDateTime::fromString(const QString &string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear)

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

デフォルト構成のQCalendar を使用します。

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

[static] QDateTime QDateTime::fromString(const QString &string, const QString &format, QCalendar cal)

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

[static, since 6.7] QDateTime QDateTime::fromString(const QString &string, const QString &format, int baseYear = QLocale::DefaultTwoDigitBaseYear)

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

デフォルトで構成されているQCalendar を使用します。

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

[static, since 6.7] QDateTime QDateTime::fromString(QStringView string, QStringView format, int baseYear, QCalendar cal)

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

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

[static, since 6.0] QDateTime QDateTime::fromString(const QString &string, QStringView format, int baseYear, QCalendar cal)

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

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

bool QDateTime::isDaylightTime() const

この日付が夏時間に該当するかどうかを返します。

Qt::TimeSpecQt::LocalTime またはQt::TimeZone でない場合、常に false を返します。

timeSpec()も参照してください

bool QDateTime::isNull() const

日付と時刻の両方が null の場合はtrue を返し、そうでない場合はfalse を返します。そうでない場合は を返します。

QDate::isNull()、QTime::isNull() およびisValid() も参照

bool QDateTime::isValid() const

このdatetimeが確定した瞬間を表している場合はtrue を返し、そうでない場合はfalse を返します。

datetimeは、その日付と時刻の両方が有効で、使用されている時間表現がそれらの組み合わせに有効な意味を与える場合に有効です。時間表現が特定のタイムゾーンまたはローカル時間である場合、夏時間の移行が1時間スキップするような(通常、春の夜間)、タイムゾーンが表現においてスキップする時間が日付上に存在する可能性がある。例えば、夏時間が午前2時に終了し、時計が午前3時に進んだ場合、その日の02:00:00から02:59:59.999までの日付は無効となる。

QDateTime::YearRangeQDate::isValid()、QTime::isValid()も参照のこと

qint64 QDateTime::msecsTo(const QDateTime &other) const

この datetime からother datetime までのミリ秒数を返します。other の日付がこの日付より早い場合、返される値は負になります。

比較を行う前に、2つのdatetimeはQt::UTC に変換されます。これは、2つのdatetimeの一方に夏時間(DST)が適用され、もう一方には適用されない場合に、結果が正しくなるようにするためです。

どちらかの日付が無効な場合は0を返す。

addMSecs()、daysTo() およびQTime::msecsTo()も参照

int QDateTime::offsetFromUtc() const

このdatetimeのOffset From UTCを秒単位で返します。

結果はtimeSpec() に依存します:

  • Qt::UTC オフセットは 0 です。
  • Qt::OffsetFromUTC オフセットは、最初に設定された値です。
  • Qt::LocalTime UTC からのローカル時刻のオフセットが返されます。
  • Qt::TimeZone タイムゾーンで使用されているオフセットが返される。

最後の2つについては、サマータイム・オフセットを考慮した、この日時におけるオフセットが返される。オフセットとは、指定したタイムゾーンの現地時間または時刻とUTC時刻との差のことで、UTCより進んだタイムゾーン(本初子午線より東)では正の値、UTCより遅れたタイムゾーン(本初子午線より西)では負の値となる。

setOffsetFromUtc()も参照

qint64 QDateTime::secsTo(const QDateTime &other) const

この datetime からother datetime までの秒数を返します。other の日付がこの日付より早い場合、返される値は負の値となる。

比較を行う前に、2つの日付がQt::UTC に変換されます。これは、2つの日付の一方に夏時間が適用され、もう一方に夏時間が適用されない場合に、結果が正しくなるようにするためです。

どちらかの日付が無効な場合は0を返します。

QDateTime now = QDateTime::currentDateTime();
QDateTime xmas(QDate(now.date().year(), 12, 25).startOfDay());
qDebug("There are %d seconds to Christmas", now.secsTo(xmas));

addSecs ()、daysTo ()、QTime::secsTo()も参照

void QDateTime::setDate(QDate date, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)

このdatetimeの日付部分をdate に設定します。

時刻がまだ設定されていない場合は、深夜に設定されます。date が無効な場合、このQDateTime は無効になります。

datetime() が、このdatetimeの時間表現の遷移に近い瞬間を記述している場合、resolve は、その状況をどのように解決するかを制御します。

注意: Qt 6.7より前のバージョンでは、この関数にresolve パラメータがなかったため、遷移に関連する曖昧さを解決する方法がありませんでした。

date(),setTime(),setTimeZone()も参照してください

void QDateTime::setMSecsSinceEpoch(qint64 msecs)

1970年のUTC開始時刻から、指定されたミリ秒数(msecs )後の瞬間を表すdatetimeを設定する。

タイムゾーンをサポートしていないシステムでは、この関数はローカル時間がQt::UTC であるかのように動作する。

qint64 (std::numeric_limits<qint64>::min()) の最小値をmsecs に渡すと、未定義の動作になることに注意。

setSecsSinceEpoch()、toMSecsSinceEpoch()、fromMSecsSinceEpoch()も参照の こと。

[until 6.9] void QDateTime::setOffsetFromUtc(int offsetSeconds)

この関数はバージョン6.9で廃止予定である。

代わりにsetTimeZone(QTimeZone::fromSecondsAheadOfUtc(offsetSeconds)) を使用する。

timeSpec() をQt::OffsetFromUTC に、offset をoffsetSeconds に設定します。 datetime は、異なる時点を参照することができます。

オフセットの最大値と最小値は、正の14時間または負の14時間である。offsetSeconds がそれより大きいか小さい場合、結果は未定義となる。

offsetSeconds が 0 の場合、timeSpec() はQt::UTC に設定される。

setTimeZone()、isValid()、offsetFromUtc()、toOffsetFromUtc()も参照

void QDateTime::setSecsSinceEpoch(qint64 secs)

1970年のUTC開始時刻から、指定された秒数(secs )後の時刻を表すdatetimeを設定する。

タイムゾーンをサポートしないシステムでは、この関数は、ローカル時間がQt::UTC であるかのように動作する。

setMSecsSinceEpoch(),toSecsSinceEpoch(),fromSecsSinceEpoch()も参照

void QDateTime::setTime(QTime time, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)

このdatetimeの時刻部分をtime に設定します。time が有効でない場合、この関数はそれを深夜に設定します。したがって、デフォルトのQTime に設定することで、QDateTime に設定された時刻を消去することができます:

QDateTime dt = QDateTime::currentDateTime();
dt.setTime(QTime());

date() とtime が、このdatetimeの時間表現の遷移に近い瞬間を記述している場合、resolve は、その状況をどのように解決するかを制御します。

注意: Qt 6.7より前のバージョンでは、この関数にresolve パラメータがなく、遷移に関連する曖昧さを解決する方法がありませんでした。

time(),setDate(),setTimeZone()も参照してください

[until 6.9] void QDateTime::setTimeSpec(Qt::TimeSpec spec)

この関数はバージョン6.9で廃止予定である。

代わりにsetTimeZone() を使用してください。

この datetime で使用される時間指定をspec に設定します。 datetime は、異なる時点を参照することができます。

specQt::OffsetFromUTC の場合、timeSpec() はQt::UTC に設定される。

specQt::TimeZone の場合、spec はQt::LocalTime 、つまり現在のシステム・タイムゾーンに設定される。

QDateTime local(QDateTime::currentDateTime());
qDebug() << "Local time is:" << local;

QDateTime UTC(local);
UTC.setTimeSpec(Qt::UTC);
qDebug() << "UTC time is:" << UTC;

qDebug() << "There are" << local.secsTo(UTC) << "seconds difference between the datetimes.";

setTimeZone()、timeSpec()、toTimeSpec()、setDate()、setTime()も参照のこと

void QDateTime::setTimeZone(const QTimeZone &toZone, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)

このdatetimeで使用されるタイムゾーンをtoZone に設定します。

datetime は、異なる時点を参照することができます。これは、toZone の時間表現を使用するため、変更されないdate() およびtime() の意味が変更される可能性があります。

toZone が無効な場合、datetimeは無効となる。そうでない場合、呼 び出し後のこのdatetimeのtimeSpec()は、toZone.timeSpec() に一致する。

date() とtime() が、toZone の遷移に近い瞬間を記述している場合、resolve は、その状況をどのように解決するかを制御します。

注意: Qt 6.7より前のバージョンでは、この関数にresolve パラメータがなかったため、遷移に関する曖昧さを解決する方法がありませんでした。

timeRepresentation(),timeZone(),Qt::TimeSpecも参照してください

[noexcept] void QDateTime::swap(QDateTime &other)

このdatetimeをother 。この操作は非常に高速で、失敗することはない。

QTime QDateTime::time() const

datetime の時刻部分を返します。

setTime()、date() およびtimeRepresentation()も参照

[since 6.5] QTimeZone QDateTime::timeRepresentation() const

この datetime がどのように時刻を表しているかを示すQTimeZone を返します。

返されたQTimeZonetimeSpec() は、このdatetimeのそれと一致する。Qt::TimeZone でない場合は、返されたQTimeZone が時間表現である。timeSpec() がQt::OffsetFromUTC の場合、返されるQTimeZone の fixedSecondsAheadOfUtc() がオフセットを提供する。timeSpec() がQt::TimeZone の場合、QTimeZone オブジェクト自体がそのタイムゾーンの完全な表現となります。

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

timeZone(),setTimeZone(),QTimeZone::asBackendZone()も参照してください

Qt::TimeSpec QDateTime::timeSpec() const

datetimeの時間指定を返します。

これは、その時間表現を、ローカル時間、UTC、UTCからの固定オフセット(オフセットを示さない)、タイムゾーン(そのタイムゾーンの詳細を示さない)に分類します。timeRepresentation().timeSpec() に相当する。

setTimeSpec()、timeRepresentation()、date()、time()も参照

QTimeZone QDateTime::timeZone() const

datetimeのタイムゾーンを返します。

結果はtimeRepresentation().asBackendZone() と同じ。いずれの場合も、結果のtimeSpec() はQt::TimeZone

timeSpec() がQt::LocalTime の場合、結果はこのメソッドが呼び出された時点のローカル時刻を表します。これは、取得元のQDateTime がシステム・タイムゾーンの変更を反映していたとしても、 その後の変更を反映したものではありません。

timeRepresentation()、setTimeZone()、Qt::TimeSpec 、およびQTimeZone::asBackendZone()も参照のこと

QString QDateTime::timeZoneAbbreviation() const

Time Zone Abbreviation関数は、この日付のタイムゾーン略語を返します。

返される文字列は、timeSpec() に依存する:

注: 省略形は一意であることが保証されていない。つまり、異なるタイムゾーンが同じ省略形を持つ可能性がある。ホストシステムから返されるQt::LocalTimeQt::TimeZone では、省略形はローカライズされている可能性がある。

timeSpec() およびQTimeZone::abbreviation()も参照

CFDateRef QDateTime::toCFDate() const

QDateTime から CFDate を作成します。

呼び出し元は CFDate オブジェクトを所有し、それを解放する責任があります。

fromCFDate()も参照

QDateTime QDateTime::toLocalTime() const

このdatetimeをローカル時間に変換したコピーを返します。

この結果は、この datetime と同じ時刻を表し、この datetime と等しくなります。

例:

QDateTime UTC(QDateTime::currentDateTimeUtc());
QDateTime local(UTC.toLocalTime());
qDebug() << "UTC time is:" << UTC;
qDebug() << "Local time is:" << local;
qDebug() << "No difference between times:" << UTC.secsTo(local);

toTimeZone()、toUTC()、toOffsetFromUtc()も参照

qint64 QDateTime::toMSecsSinceEpoch() const

1970年のUTC開始時刻から何ミリ秒後の日時かを返す。

タイムゾーンをサポートしていないシステムでは、この関数はローカル時間がQt::UTC であるかのように動作する。

このオブジェクトに格納されたdatetimeが有効でない場合、この関数の動作は未定義です。しかし、すべての有効な日付に対して、この関数は一意な値を返します。

toSecsSinceEpoch()、setMSecsSinceEpoch() およびfromMSecsSinceEpoch()も参照

NSDate *QDateTime::toNSDate() const

QDateTime から NSDate を作成します。

NSDate オブジェクトは自動解放されます。

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

QDateTime QDateTime::toOffsetFromUtc(int offsetSeconds) const

指定されたoffsetSecondsQt::OffsetFromUTC の仕様に変換されたこの datetime のコピーを返します。toTimeZone(QTimeZone::fromSecondsAheadOfUtc(offsetSeconds)) と同じです。

offsetSeconds が 0 の場合は UTC datetime が返されます。

この結果は、この datetime と同じ時刻を表し、それと等しくなります。

setOffsetFromUtc()、offsetFromUtc() およびtoTimeZone()も参照

qint64 QDateTime::toSecsSinceEpoch() const

datetimeは、1970年のUTC開始からの秒数で返される。

タイムゾーンをサポートしていないシステムでは、この関数はローカル時間がQt::UTC であるかのように動作する。

このオブジェクトに格納されている日付が有効でない場合、この関数の動作は未定義です。しかし、すべての有効な日付に対して、この関数は一意な値を返します。

toMSecsSinceEpoch()、fromSecsSinceEpoch()、setSecsSinceEpoch()も参照

[since 6.4] std::chrono::sys_time<std::chrono::milliseconds> QDateTime::toStdSysMilliseconds() const

この datetime オブジェクトを、std::chrono::system_clock を時計として使用する、ミリ秒単位で表される等価な時点に変換します。

注意: この関数は C++20 を必要とします。

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

fromStdTimePoint() およびtoMSecsSinceEpoch()も参照してください

[since 6.4] std::chrono::sys_seconds QDateTime::toStdSysSeconds() const

この datetime オブジェクトを、std::chrono::system_clock を時計として使用する、秒単位で表される等価な時点に変換します。

注意: この関数は C++20 を必要とします。

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

fromStdTimePoint() およびtoSecsSinceEpoch()も参照してください

QString QDateTime::toString(QStringView format) const

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

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

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

指定されたformat の文字列として datetime を返します。

formatQt::TextDate の場合、文字列はデフォルトの方法でフォーマットされます。曜日と月の名前は英語になります。この書式の例は、"Wed May 20 03:40:13 1998 "です。ローカライズされた書式については、QLocale::toString()を参照のこと。

formatQt::ISODate の場合、文字列の書式は日付と時刻の表現に関する ISO 8601 拡張仕様に対応し、QDateTimetimeSpec() に応じて、yyyy-MM-ddTHH:mm:ss[Z|±H:mm] の形式をとる。timeSpec() がQt::UTC の場合、文字列に Z が付加される。timeSpec() がQt::OffsetFromUTC の場合、文字列に UTC からの時分オフセットが付加される。ISO 8601の日付にミリ秒を含めるには、format Qt::ISODateWithMs 、yyyy-MM-ddTHH:mm:ss.zz[Z|±HH:mm]に対応する。

formatQt::RFC2822Date の場合、文字列はRFC 2822に従ってフォーマットされる。

datetimeが無効な場合、空の文字列が返される。

警告: Qt::ISODate の書式は、0から9999の範囲の年に対してのみ有効である。

fromString()、QDate::toString()、QTime::toString()、QLocale::toString()も参照

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

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

[until 6.9] QDateTime QDateTime::toTimeSpec(Qt::TimeSpec spec) const

この関数はバージョン 6.9 で廃止予定です。

代わりにtoTimeZone() を使用してください。

指定された時刻spec に変換した datetime のコピーを返します。

この結果は、この datetime と同じ時刻を表し、それと等しくなります。

specQt::OffsetFromUTC の場合、Qt::UTC に設定されます。UTC からの固定オフセットに設定するには、toTimeZone() またはtoOffsetFromUtc() を使用します。

specQt::TimeZone の場合、Qt::LocalTime 、つまりローカルのタイムゾーンに設定される。指定したタイムゾーンを設定するには、toTimeZone ()を使用します。

QDateTime local(QDateTime::currentDateTime());
QDateTime UTC(local.toTimeSpec(Qt::UTC));
qDebug() << "Local time is:" << local;
qDebug() << "UTC time is:" << UTC;
qDebug() << "No difference between times:" << local.secsTo(UTC);

setTimeSpec()、timeSpec()、toTimeZone()も参照

QDateTime QDateTime::toTimeZone(const QTimeZone &timeZone) const

このdatetimeを指定されたtimeZone に変換したコピーを返します。

この結果は、この datetime と同じ時刻を表し、この datetime と等しくなります。

結果は、timeZone の時間表現で、その時点の時刻を表します。例えば

QDateTime local(QDateTime::currentDateTime());
QDateTime UTC(local.toTimeSpec(QTimeZone::UTC));
qDebug() << "Local time is:" << local;
qDebug() << "UTC time is:" << UTC;
qDebug() << "No difference between times represented:" << local.secsTo(UTC);

timeZone が無効な場合、datetime は無効になります。そうでない場合、返されたdatetimeのtimeSpec() はtimeZone.timeSpec() と一致します。

timeRepresentation()、toLocalTime()、toUTC()、toOffsetFromUtc()も参照のこと

QDateTime QDateTime::toUTC() const

このdatetimeをUTCに変換したコピーを返します。

この結果は、この datetime と同じ時刻を表し、等しくなります。

例:

QDateTime local(QDateTime::currentDateTime());
QDateTime UTC(local.toUTC());
qDebug() << "Local time is:" << local;
qDebug() << "UTC time is:" << UTC;
qDebug() << "No difference between times:" << local.secsTo(UTC);

toTimeZone()、toLocalTime()、toOffsetFromUtc()も参照

[since 6.4] QDateTime &QDateTime::operator+=(std::chrono::milliseconds duration)

指定されたduration を追加して、このdatetimeオブジェクトを変更します。更新されたオブジェクトは、duration が正の場合は後の日付になり、負の場合は前の日付になります。

このdatetimeが無効な場合、この関数は何もしません。

このdatetimeオブジェクトへの参照を返します。

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

addMSecs()も参照してください

[since 6.4] QDateTime &QDateTime::operator-=(std::chrono::milliseconds duration)

与えられたduration を引くことによって、このdatetimeオブジェクトを変更します。更新されたオブジェクトは、duration が正の場合は早くなり、負の場合は遅くなります。

このdatetimeが無効な場合、この関数は何も行いません。

このdatetimeオブジェクトへの参照を返します。

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

addMSecsも参照してください

[noexcept] QDateTime &QDateTime::operator=(const QDateTime &other)

other datetimeをこれにコピーし、このコピーを返します。

関連する非メンバ

[since 6.4] QDateTime operator+(const QDateTime &dateTime, std::chrono::milliseconds duration)

[since 6.4] QDateTime operator+(std::chrono::milliseconds duration, const QDateTime &dateTime)

duration ミリ秒後のdateTimeduration が負の場合はそれ以前)の datetime を含むQDateTime オブジェクトを返します。

dateTime が無効な場合は、無効な datetime が返されます。

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

addMSecs()も参照してください

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

lhsrhs と異なる場合はtrue を返し、そうでない場合はfalse を返します。

異なる時間表現を使っている2つのdatetimeは、UTCからのオフセットが異なることがあります。この場合、date() とtime() が異なっていても、その差がUTCオフセットの差と一致すれば、同等のものとして比較できる。date()time() が一致する場合、UTCからのオフセットが大きい方が小さい(早い)。その結果、日付の順序は弱いものになる。

5.14以降、無効なデータタイムはすべて等価であり、有効なデータタイムよりも小さい。

operator==()も参照のこと

[since 6.4] std::chrono::milliseconds operator-(const QDateTime &lhs, const QDateTime &rhs)

lhsrhs の間のミリ秒数を返す。lhsrhs よりも早い場合、結果は負になる。

どちらの日時も無効な場合は0を返します。

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

msecsTo()も参照してください

[since 6.4] QDateTime operator-(const QDateTime &dateTime, std::chrono::milliseconds duration)

dateTime よりもミリ秒早い(duration が負の場合は遅い)日時duration を含むQDateTime オブジェクトを返します。

dateTime が無効な場合は、無効な datetime が返されます。

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

addMSecs()も参照してください

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

lhsrhs より早い場合はtrue を返し、そうでない場合はfalse を返します。

異なる時間表現を使っている2つのdatetimeは、UTCからのオフセットが異なることがあります。この場合、date() とtime() が異なっていても、その差がUTCオフセットの差と一致すれば、同等のものとして比較することができる。date()time() が一致する場合、UTCからのオフセットが大きい方が小さい(早い)。その結果、日付の順序は弱いものになる。

5.14以降、無効なデータタイムはすべて等価であり、有効なデータタイムよりも小さい。

operator==()も参照のこと

QDataStream &operator<<(QDataStream &out, const QDateTime &dateTime)

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

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

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

lhsrhs よりも早いか等しい場合はtrue を返し、そうでない場合はfalse を返します。

異なる時間表現を使用する2つの日付は、UTCからのオフセットが異なることがあります。この場合、date() とtime() が異なっていても、その差がUTCオフセットの差と一致すれば、同等のものとして比較することができる。date()time() が一致する場合、UTCからのオフセットが大きい方が小さい(早い)。その結果、日付の順序は弱いものになる。

5.14以降、無効なデータタイムはすべて等価であり、有効なデータタイムよりも小さい。

operator==()も参照のこと

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

lhsrhs と同じ時刻を表している場合はtrue を返し、そうでない場合はfalse を返す。

異なる時刻表現を使っている2つのdatetimeは、UTCからのオフセットが異なることがある。この場合、date()とtime()が異なっていても、その差がUTCオフセットの差と一致すれば、同等のものとして比較することができる。date()time() が一致する場合、UTCからのオフセットが大きい方が小さい(早い)。その結果、日付の順序は弱いものになる。

5.14以降、無効なデータタイムはすべて等価であり、有効なデータタイムよりも小さい。

operator!=()、operator<()、operator<=()、operator>()、operator>=()も参照のこと

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

lhsrhs よりも後の場合はtrue を返し、それ以外の場合はfalse を返す。

異なる時間表現を使用する2つの日付は、UTCからのオフセットが異なることがある。この場合、date()とtime()が異なっていても、その差がUTCオフセットの差と一致すれば、同等のものとして比較することができる。date()time() が一致する場合、UTCからのオフセットが大きい方が小さい(早い)。その結果、日付の順序は弱いものになる。

5.14以降、無効なデータタイムはすべて等価であり、有効なデータタイムよりも小さい。

operator==()も参照のこと

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

lhsrhs よりも遅いか等しい場合はtrue を返し、そうでない場合はfalse を返す。

異なる時間表現を使用する2つのdatetimeは、UTCからのオフセットが異なることがある。この場合、date()とtime()が異なっていても、その差がUTCオフセットの差と一致すれば、同等のものとして比較することができる。date()time() が一致する場合、UTCからのオフセットが大きい方が小さい(早い)。その結果、日付の順序は弱いものになる。

5.14以降、無効なデータタイムはすべて等価であり、有効なデータタイムよりも小さい。

operator==()も参照のこと

QDataStream &operator>>(QDataStream &in, QDateTime &dateTime)

ストリームin からdateTime に日時を読み込みます。

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

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。