このページでは

QTimeZone Class

QTimeZone は、時刻の表現が UTC とどのように関連しているかを識別します。詳細...

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

注:このクラスのすべての関数はスレッドセーフです。

QTimeZone の比較

カテゴリ比較可能な型
等価性QTimeZone

パブリック型

struct OffsetData
(since 6.5) enum Initialization { LocalTime, UTC }
enum NameType { DefaultName, LongName, ShortName, OffsetName }
OffsetDataList
enum TimeType { StandardTime, DaylightTime, GenericTime }

パブリック関数

QTimeZone()
(since 6.5) QTimeZone(QTimeZone::Initialization spec)
QTimeZone(const QByteArray &ianaId)
QTimeZone(int offsetSeconds)
QTimeZone(const QByteArray &zoneId, int offsetSeconds, const QString &name, const QString &abbreviation, QLocale::Territory territory = QLocale::AnyTerritory, const QString &comment = QString())
QTimeZone(const QTimeZone &other)
QTimeZone(QTimeZone &&other)
~QTimeZone()
QString abbreviation(const QDateTime &atDateTime) const
(since 6.5) QTimeZone asBackendZone() const
QString comment() const
int daylightTimeOffset(const QDateTime &atDateTime) const
QString displayName(QTimeZone::TimeType timeType, QTimeZone::NameType nameType = DefaultName, const QLocale &locale = QLocale()) const
QString displayName(const QDateTime &atDateTime, QTimeZone::NameType nameType = DefaultName, const QLocale &locale = QLocale()) const
(since 6.5) int fixedSecondsAheadOfUtc() const
(since 6.8) bool hasAlternativeName(QByteArrayView alias) const
bool hasDaylightTime() const
bool hasTransitions() const
QByteArray id() const
bool isDaylightTime(const QDateTime &atDateTime) const
(since 6.5) bool isUtcOrFixedOffset() const
bool isValid() const
QTimeZone::OffsetData nextTransition(const QDateTime &afterDateTime) const
QTimeZone::OffsetData offsetData(const QDateTime &forDateTime) const
int offsetFromUtc(const QDateTime &atDateTime) const
QTimeZone::OffsetData previousTransition(const QDateTime &beforeDateTime) const
int standardTimeOffset(const QDateTime &atDateTime) const
void swap(QTimeZone &other)
(since 6.2) QLocale::Territory territory() const
(since 6.5) Qt::TimeSpec timeSpec() const
CFTimeZoneRef toCFTimeZone() const
NSTimeZone *toNSTimeZone() const
QTimeZone::OffsetDataList transitions(const QDateTime &fromDateTime, const QDateTime &toDateTime) const
QTimeZone &operator=(QTimeZone &&other)
QTimeZone &operator=(const QTimeZone &other)

静的パブリックメンバー

const int MaxUtcOffsetSecs
const int MinUtcOffsetSecs
QList<QByteArray> availableTimeZoneIds()
QList<QByteArray> availableTimeZoneIds(QLocale::Territory territory)
QList<QByteArray> availableTimeZoneIds(int offsetSeconds)
QTimeZone fromCFTimeZone(CFTimeZoneRef timeZone)
(since 6.5) QTimeZone fromDurationAheadOfUtc(std::chrono::seconds offset)
QTimeZone fromNSTimeZone(const NSTimeZone *timeZone)
(since 6.5) QTimeZone fromSecondsAheadOfUtc(int offset)
(since 6.4) QTimeZone fromStdTimeZonePtr(const std::chrono::time_zone *timeZone)
QByteArray ianaIdToWindowsId(const QByteArray &ianaId)
bool isTimeZoneIdAvailable(QByteArrayView ianaId)
(since 6.5) bool isUtcOrFixedOffset(Qt::TimeSpec spec)
QTimeZone systemTimeZone()
QByteArray systemTimeZoneId()
QTimeZone utc()
QByteArray windowsIdToDefaultIanaId(const QByteArray &windowsId)
QByteArray windowsIdToDefaultIanaId(const QByteArray &windowsId, QLocale::Territory territory)
QList<QByteArray> windowsIdToIanaIds(const QByteArray &windowsId)
QList<QByteArray> windowsIdToIanaIds(const QByteArray &windowsId, QLocale::Territory territory)
bool operator!=(const QTimeZone &lhs, const QTimeZone &rhs)
bool operator==(const QTimeZone &lhs, const QTimeZone &rhs)

詳細な説明

日付と時刻が組み合わされる場合、その結果の意味は時刻がどのように表現されているかによって異なります。 時刻の表現に関しては、さまざまな国際規格がありますが、その一つである UTC は、グリニッジの太陽平均時(別名 GMT)という従来の標準に対応しています。Qt がサポートするその他のすべての時刻システムは、最終的には UTC に関連付けて規定されています。このクラスのインスタンスは、UTC と他の時刻表現との間の変換を行う、ステートレスな計算機能を提供します。

時刻の表現の中には、単にUTCからの固定オフセットとして定義されているものもあります。また、管轄区域内での使用を目的として政府によって定義されたものもあります。後者は厳密には「タイムゾーン」と呼ばれますが、QTimeZone(Qt 6.5以降)は、その表現を一般的な時刻システムのものに統一しています。 ほとんどのオペレーティングシステムで一般的にサポートされているタイムゾーンの一つは、ローカルタイムとして指定されています。これは、ユーザーが居住しているタイムゾーンに対応すると想定されています。

現地時間、UTC、およびUTCからの固定オフセットを持つタイムゾーン以外のタイムゾーンについては、Qtはオペレーティングシステムがその情報にアクセスする手段を提供している場合にのみサポートできます。Qtのビルド時、timezone 機能によって、そのような情報が利用可能かどうかが制御されます。 この機能が有効でない場合、QTimeZone のコンストラクタやメソッドの一部は API から除外されます。これらは、機能timezone に依存するものとして文書化されています。なお、Qt がこの機能を有効にしてビルドされている場合でも、システムの設定が誤っているユーザーや、一部の標準パッケージ(たとえば、Linux のtzdata パッケージ)がインストールされていないユーザーには、この機能が利用できない場合があることに注意してください。 この機能は、タイムゾーン情報が利用可能な場合、デフォルトで有効になります。

このクラスは主にQDateTime での使用を想定して設計されています。ほとんどのアプリケーションでは、このクラスに直接アクセスする必要はなく、代わりにQDateTime を生成する際にそのインスタンスを使用する必要があります。

注: QDateTime との整合性を保つため 、QTimeZone は閏秒を考慮していません。

備考

QTimeZoneは、QDateTime と同様に、UTCからのオフセットを秒単位で測定します。これは、一般的にミリ秒単位で行われる時間の測定とは対照的です。 実世界のタイムゾーンのUTCオフセットは、少なくとも1970年よりずっと前から、一般的に5分(300秒)の整数倍となっています。UTCからのオフセットが正の場合、その日の正午はUTCの正午より早くなります。オフセットが負の場合、その日の正午はUTCの正午より遅くなります。

軽量な時刻表現

QTimeZoneは、timezone 機能が無効になっている場合でも、UTC、現地時間、およびUTCからの固定オフセットを表現できます。この表現形式は、同機能が有効な場合にも利用可能です。これはより軽量な形式であり、timezone 機能が有効な場合にのみ利用可能なメソッドが使用されない限り、これを使用した処理は通常、より効率的です。 これらの表現を構築する方法については、Initialization およびQTimeZone::fromSecondsAheadOfUtc(int) を参照してください。

このドキュメントでは、システムが提供する情報や標準的な情報によって記述される時間表現を表す「タイムゾーン」と、これらの軽量形式を含む、より一般的な時間表現とを区別しています。 機能timezone が有効になっている場合にのみ利用可能なメソッドは、軽量な時刻表現よりもタイムゾーンの場合の方が処理コストが低くなる傾向があります。軽量な時刻表現の場合、これらのメソッドは、クエリを転送するための適切な一時的なタイムゾーンオブジェクトを構築することがあります。

IANA タイムゾーン ID

QTimeZone は、IANA タイムゾーンデータベース (http://www.iana.org/time-zones) で定義されている IANA タイムゾーン ID を使用します。これは、サポートされるすべてのプラットフォームで標準的な ID を確保するためです。 ほとんどのプラットフォームは IANA ID および IANA データベースをネイティブでサポートしていますが、Windows の場合、ネイティブ ID へのマッピングが必要となります。詳細については以下を参照してください。

IANA IDは定期的に変更される可能性があり、実際に変更されることもあります。また、ホストシステムのデータが最後に更新された時期によって異なる場合があります。そのため、特定のIDがどのホストシステムにも存在することを前提にすることはできません。利用可能なIANA IDを確認するには、availableTimeZoneIds() を使用する必要があります。

IANA IDおよびデータベースは、データベースの最初の作成者にちなんで、オルソンIDおよびデータベースとしても知られています。

UTCオフセットのタイムゾーン

timezone 機能が有効になっている場合、常に利用可能なデフォルトの UTC タイムゾーンバックエンドが提供されます。これにより、UTC-16:00 から UTC+16:00 の範囲にある一連の汎用「UTCからのオフセット」タイムゾーンが提供されます。 これらのタイムゾーンは、availableTimeZoneIds() に記載されている「UTC+00:00」などの標準的な ISO 形式の名前、または同様の形式の名前とオフセット秒数を組み合わせて作成できます。

Windows のタイムゾーン

Windows ネイティブのタイムゾーンサポートは、標準的な IANA TZ データベースと比較して著しく制限されています。Windows のタイムゾーンはより広範な地理的範囲をカバーしているため、換算の精度が低くなります。また、過去のデータを十分にサポートしていないため、正確なのは当年分のみである可能性があります。 特に、MSのタイムゾーンデータが1900年以前に夏時間が実施されていたと主張している場合(これは歴史的に事実ではないことが知られている)、その主張は無視され、1900年に(伝えられるところによれば)有効だった標準時間が常に有効であったものとみなされます。

QTimeZoneは、IANA IDとWindows IDを対応付けるために、Unicode CLDRデータから導出された変換テーブルを使用します。お使いのWindowsおよびQtのバージョンによっては、このテーブルが有効な変換を提供できない場合があり、その場合は「UTC」が返されます。

QTimeZoneは、この変換テーブルを使用するための公開APIを提供しています。使用されるWindows IDは、そのタイムゾーンに対応するWindowsレジストリキーであり、これはMS ExchangeのEWS IDとも一致しますが、2007年以前のバージョンのMS Exchangeで使用されていたタイムゾーン名(TZID)やCODコードとは異なります。

注: QtがICUライブラリを使用してビルドされている場合 、WindowsシステムAPIよりもICUが優先的に使用され、名称の違いに起因するAPI関連の問題はすべて回避されます。

WebAssembly

WebAssembly上では、QTimeZoneはバックエンドベースの形式で表現される場合、UTCおよび固定のUTCオフセットを持つタイムゾーンのみをサポートします。IANAタイムゾーンデータベースは利用できないため、availableTimeZoneIds() のような関数はUTCオフセットを持つタイムゾーンのみを返します。 システムのタイムゾーンは、JavaScriptのDate.getTimezoneOffset() を介して取得され、地理的なIANA IDではなく、固定オフセット(例: "UTC+02:00")として表現されます。ただし、QTimeZone(QTimeZone::LocalTime)は、プラットフォームの標準的な時間関数に依存しているため、現地時間を正確に表現します。

システムのタイムゾーン

systemTimeZoneId() メソッドは、現在のシステムの IANA タイムゾーン ID を返します。Unix 系システムでは、この値は常に正しいものとなります。 Windows では、この ID は、内部の変換テーブルとユーザーが選択した国に基づいて、Windows システム ID から変換されます。その結果、ごくまれに、Qt が認識しない ID を持つ Windows インストール環境が存在する場合があり、その場合は「UTC」が返されます。

システムのタイムゾーン ID を使用して新しい QTimeZone インスタンスを作成しても、そのタイムゾーンの固定名を持つコピーが生成されるだけであり、システムのタイムゾーンが変更されても変更されることはありません。QTimeZone::systemTimeZone() は、このシステム ID で指定されたゾーンを表すインスタンスを返します。 このシステムタイムゾーンを使用してQDateTime を構築する場合と、Qt::LocalTime をQt::TimeSpec として使用するQDateTime を構築する場合では、動作が異なる可能性があることに注意してください。後者は、ローカル時刻情報にアクセスするためにシステムAPIを直接使用するため、動作が異なる場合があり(特に、ユーザーがシステムタイムゾーン設定を調整した場合に適応する可能性があります)。

タイムゾーンのオフセット

UTC とタイムゾーン内の現地時間の差は、UTC からの秒単位のオフセット、すなわち現地時間を算出するために UTC に加算すべき秒数として表されます。総オフセットは、標準時オフセットと夏時間オフセットという 2 つの構成要素から成り立っています。 標準時オフセットとは、そのタイムゾーンの標準時を得るためにUTCに加算すべき秒数です。夏時間オフセットとは、そのタイムゾーンの夏時間(DSTと略され、「デイライトタイム」または「サマータイム」と呼ばれることもあります)を得るために、標準時オフセットに加算すべき秒数です。 一般的な夏時間(冬は標準時、夏は夏時間)の場合、夏時間のオフセットは正の値となります。ただし、一部の時間帯では、冬に負の夏時間オフセットが使用され、夏には標準時が使用される場合もあります。

なお、各国が夏時間に関する法律を変更したり、標準時のオフセット自体を変更したりするため、あるタイムゾーンの標準時オフセットおよび夏時間オフセットは、時間の経過とともに変更される可能性があることに注意してください。

ライセンス

このクラスには、「Unicodeデータファイルおよびソフトウェアライセンス」の条件に基づき、CLDRデータファイルから取得したデータが含まれています。詳細については、Unicode Common Locale Data Repository (CLDR)を参照してください。

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

メンバ型のドキュメント

[since 6.5] enum QTimeZone::Initialization

最も単純な軽量な時刻表現の型。

この列挙型は、QTimeZone のコンストラクタに渡す軽量時間表現の型を識別するもので、これ以外にデータは必要とされない。これらは、Qt::TimeSpec の同名のメンバに対応している。

定数値説明
QTimeZone::LocalTime0この時刻表現は、time_t およびstruct tm の値を使用して、現地時間と UTC 時間を相互に変換するシステム関数によって暗黙的に使用されるものに相当します。
QTimeZone::UTC1この時刻表現である協定世界時(Coordinated Universal Time)は、サポートされているすべての時刻表現において、現地時間が参照される基準となる表現です。これは国際電気通信連合(ITU)によって定義されています。

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

enum QTimeZone::NameType

タイムゾーン名の種類。

定数値説明
QTimeZone::DefaultName0タイムゾーン名のデフォルト形式。LongName、ShortName、または OffsetName のいずれか。
QTimeZone::LongName1タイムゾーン名の長い形式。例: 「Central European Time」
QTimeZone::ShortName2タイムゾーン名の短縮形式。通常は略語(例: 「CET」)ですが、そのゾーンに略語が定義されているロケールに限ります。それ以外の場合は、コンパクトなGMTオフセット形式(例: 「GMT+1」)となります
QTimeZone::OffsetName3タイムゾーン名の標準的な ISO オフセット形式。例: 「UTC+01:00」

このタイプは、timezone 機能が有効になっている場合にのみ利用可能です。

QTimeZone::OffsetDataList

QList<OffsetData> の同義語。

このタイプは、timezone 機能が有効になっている場合にのみ利用可能です。

enum QTimeZone::TimeType

タイムゾーンの名称は、UTCからの標準オフセットを使用しているか、そのオフセットに夏時間調整が適用されているかを示すために、季節によって異なる場合があります。そのような場合、通常、季節に関係なく適用される総称も存在します。ゾーンの表示名を要求する際、このタイプは、それらの名称のうちどれを使用すべきかを指定します。 夏時間を適用しないタイムゾーンでは、3つの値すべてが同じ結果を返す場合があります。

定数値説明
QTimeZone::StandardTime0そのタイムゾーンの標準時の名称。たとえば、「Pacific Standard Time」など。
QTimeZone::DaylightTime1夏時間が有効な場合のゾーン名。たとえば、「Pacific Daylight Time」など。
QTimeZone::GenericTime2夏時間の適用有無にかかわらず、その時間帯を表す名称。例:「Pacific Time」。

この型は、機能「timezone 」が有効になっている場合にのみ利用可能です。

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

[noexcept] QTimeZone::QTimeZone()

nullまたは無効なタイムゾーンインスタンスを作成します。

[noexcept, since 6.5] QTimeZone::QTimeZone(QTimeZone::Initialization spec)

UTCまたは現地時間を表す軽量なインスタンスを作成します。

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

fromSecondsAheadOfUtc()、asBackendZone()、utc()、およびsystemTimeZone()も参照してください 。

[explicit] QTimeZone::QTimeZone(const QByteArray &ianaId)

指定された IANA IDianaId を持つタイムゾーンインスタンスを作成します。

ID は、利用可能なシステム ID または有効なオフセット付き UTC ID のいずれかでなければなりません。そうでない場合、無効なタイムゾーンが返されます。オフセット付き UTC ID の場合、それが実際には IANA ID ではないときは、結果として得られるインスタンスのid() が、コンストラクタに渡された ID と異なることがあります。

このコンストラクタは、timezone 機能が有効になっている場合にのみ利用可能です。

availableTimeZoneIds() およびid()も参照してください 。

[explicit] QTimeZone::QTimeZone(int offsetSeconds)

指定されたオフセット(offsetSeconds )を基に、UTCからのタイムゾーンインスタンスを作成します。

UTCからのoffsetSeconds は-16時間から+16時間の範囲内である必要があります。それ以外の場合、無効なタイムゾーンが返されます。

このコンストラクタは、timezone 機能が有効になっている場合にのみ利用可能です。返されるインスタンスは、タイムゾーンとして実装されていますが、軽量な時刻表現QTimeZone::fromSecondsAheadOfUtc(offsetSeconds) と同等です。

MinUtcOffsetSecs 、MaxUtcOffsetSecs 、およびid()も参照してください 。

QTimeZone::QTimeZone(const QByteArray &zoneId, int offsetSeconds, const QString &name, const QString &abbreviation, QLocale::Territory territory = QLocale::AnyTerritory, const QString &comment = QString())

UTC から一定のオフセットを持つカスタムタイムゾーンインスタンスを作成します。

返されるタイムゾーンのIDはzoneId 、UTCからのオフセットはoffsetSeconds となります。name は、displayName()がLongName に対して使用する名前となり、abbreviation は、displayName()がShortName に対して、およびabbreviation()で使用され、オプションのterritory は、territory()で使用されます。comment は、ユーザーがタイムゾーンを選択する際の補助としてGUIに表示される可能性のあるオプションの注記です。

UTCからのoffsetSeconds は、-16時間から+16時間の範囲内である必要があります。zoneId は、availableTimeZoneIds()に表示されないUTCオフセット名でない限り、isTimeZoneIdAvailable()が真となるIDであってはなりません。

カスタムタイムゾーンに特定の地域が設定されていない場合は、デフォルト値であるQLocale::AnyTerritory に設定してください。

このコンストラクタは、timezone 機能が有効になっている場合にのみ利用可能です。

関連項目: id()、offsetFromUtc()、displayName()、abbreviation()、territory()、comment()、MinUtcOffsetSecs 、およびMaxUtcOffsetSecs 。

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

コピーコンストラクタ:other を this にコピーする。

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

other から、このクラスの移動コンストラクタを移動しました。

[noexcept] QTimeZone::~QTimeZone()

タイムゾーンを削除します。

QString QTimeZone::abbreviation(const QDateTime &atDateTime) const

指定されたatDateTime のタイムゾーンの略称を返します。

この略称は、夏時間(DST)や歴史的な出来事によって変更される場合があります。

注: この略称が 当該タイムゾーンに固有のものであることは保証されておらず、ID や表示名の代わりに使用すべきではありません。略称は、基盤となるオペレーティングシステムに応じてローカライズされる場合があります。一貫性のあるローカライズを得るには、displayName(atDateTime, QTimeZone::ShortName, locale) を使用してください。

このメソッドは、機能timezone が有効になっている場合にのみ利用可能です。

関連項目 :displayName()

[since 6.5] QTimeZone QTimeZone::asBackendZone() const

このQTimeZone を、timeSpec()がQt::TimeZone となるものに変換します。

いずれの場合も、結果のtimeSpec()はQt::TimeZone となります。このQTimeZone のtimeSpec()がQt::TimeZone の場合、このQTimeZone 自体が返されます。timeSpec()がQt::LocalTime の場合、systemTimeZone()が返されます。

timeSpec() がQt::UTC の場合、QTimeZone::utc() が返されます。Qt::OffsetFromUTC の場合、QTimeZone(int) にオフセットが渡され、その結果が返されます。

軽量な時刻表現(現地時間、UTC 時間、または UTC からの固定オフセットによる時刻)を使用する場合、機能timezone が有効なときにのみサポートされるメソッドを使用することは、対応するタイムゾーンを使用するよりも処理負荷が高くなる可能性があります。このメソッドは、軽量な時刻表現を対応するタイムゾーン、つまりシステムが提供するデータまたは標準データに基づくインスタンスにマッピングします。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

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

QTimeZone(QTimeZone::Initialization) およびfromSecondsAheadOfUtc()も参照してください 。

[static] QList<QByteArray> QTimeZone::availableTimeZoneIds()

このシステムで使用可能なタイムゾーン ID のリストを返します。

これには、システムのタイムゾーン情報ソースでサポートされている各ゾーンの IANA ID に加え、それらのエイリアスや、一般的に使用される UTC オフセット ID の限定されたセットが含まれます。

QTimeZone コンストラクタは、返されるリストに含まれていない一部のUTCオフセットIDも受け付けます。これは、考えられるすべてのUTCオフセットIDをリストアップすることは現実的ではないためです。また、サポートされているIANA IDの既知の別名も受け付けますが、その一部はこのリストに表示されない場合があります。このようなIDは、isTimeZoneIdAvailable() でも受け付けられます。

Unicodeコンソーシアムの共通ロケールデータリポジトリ(CLDR)が、サポートされているIANA IDをそのゾーンの安定名の別名と見なしている場合、 そのゾーンの安定名称も(たとえ情報が古くなっている場合でも)、安定性を確保するため、および異なるシステムタイムゾーン情報ソースが同一のゾーンに対して異なるエイリアスを使用する場合のクロスプラットフォーム上の共通基盤として、このリストに含まれます。

このメソッドは、機能timezone が有効になっている場合にのみ利用可能です。

isTimeZoneIdAvailable() およびhasAlternativeName()も参照してください 。

[static] QList<QByteArray> QTimeZone::availableTimeZoneIds(QLocale::Territory territory)

指定されたterritory に対して利用可能なすべてのIANAタイムゾーンIDのリストを返します。

特例として、territory にAnyTerritory を指定すると、UTCなどの特定の地域に紐づかないタイムゾーンが選択され、World を指定すると、グローバルなデフォルトのIANA IDを持つタイムゾーンが選択されます。すべての地域に対するすべてのタイムゾーンIDのリストが必要な場合は、標準のavailableTimeZoneIds()メソッドを使用してください。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

isTimeZoneIdAvailable() およびterritory()も参照してください 。

[static] QList<QByteArray> QTimeZone::availableTimeZoneIds(int offsetSeconds)

指定された標準時刻オフセット「offsetSeconds 」を持つ、利用可能なすべてのIANAタイムゾーンIDのリストを返します。

指定されたオフセットがサポートされている場合、たとえそれが IANA ID でなかったとしても、QTimeZone(offsetSeconds).id() がリストに含まれます。これは、指定されたオフセットを持つ IANA UTC オフセット ID が存在しない場合にのみ発生します。

このメソッドは、機能timezone が有効になっている場合にのみ利用可能です。

isTimeZoneIdAvailable() およびQTimeZone(int)も参照してください 。

QString QTimeZone::comment() const

そのタイムゾーンに関するコメントを返します。

コメントは、ユーザーが正しいタイムゾーンを選択できるよう、ホストプラットフォームによって提供される場合があります。プラットフォームによっては、ローカライズされていない場合があります。

このメソッドは、機能「timezone 」が有効になっている場合にのみ利用可能です。

int QTimeZone::daylightTimeOffset(const QDateTime &atDateTime) const

指定されたatDateTime における夏時間のオフセット、すなわち、標準時間のオフセットに足して現地の夏時間を算出するための秒数を返します。

たとえば、タイムゾーン「Europe/Berlin」の場合、夏時間のオフセットは+3600秒です。標準時間の期間中、daylightTimeOffset()は0を返し、夏時間が適用されている期間中は+3600を返します。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

offsetFromUtc() およびstandardTimeOffset()も参照してください 。

QString QTimeZone::displayName(QTimeZone::TimeType timeType, QTimeZone::NameType nameType = DefaultName, const QLocale &locale = QLocale()) const

ローカライズされたタイムゾーンの表示名を返します。

返される名称は、指定されたlocale に対応するものであり、指定されたtimeType が有効な場合に適用され、nameType で示される形式となります。タイムゾーンの表示名が時間の経過とともに変更された場合、現在の名称が使用されます。指定されたタイプの適切にローカライズされた名称が利用できない場合、別の名称タイプが使用されるか、空の文字列が返されることがあります。

locale が指定されていない場合は、アプリケーションのデフォルトのロケールが使用されます。 クライアントコードによって作成されたカスタムタイムゾーンについては、ローカライズデータが利用できないため、コンストラクタに指定されたデータが使用されます。このタイムゾーンが無効な場合は、空の文字列が返されます。これは、システムタイムゾーンの判定に失敗した場合の現地時間の表現においても発生する可能性があります。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

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

QString QTimeZone::displayName(const QDateTime &atDateTime, QTimeZone::NameType nameType = DefaultName, const QLocale &locale = QLocale()) const

ローカライズされたタイムゾーンの表示名を返します。

返される名称は、指定されたlocale に対応し、指定されたatDateTime で適用され、nameType で示される形式のものです。表示名は、夏時間(DST)や歴史的な出来事によって変更される場合があります。指定されたタイプの適切にローカライズされた名称が利用できない場合、別のタイプの名称が使用されるか、空の文字列が返されることがあります。

locale が指定されていない場合、アプリケーションのデフォルトのロケールが使用されます。 クライアントコードによって作成されたカスタムタイムゾーンの場合、そのタイムゾーンに関するローカライズデータは利用できないため、コンストラクタに指定されたデータが使用されます。このタイムゾーンが無効な場合、空の文字列が返されます。また、システムタイムゾーンの判定に失敗した場合、現地時間の表現においても同様の現象が発生する可能性があります。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

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

[constexpr noexcept, since 6.5] int QTimeZone::fixedSecondsAheadOfUtc() const

timeSpec() の値がQt::OffsetFromUTC となる軽量な時刻表現の場合、この関数は、その時刻表現が表す UTC からの固定オフセットを返します。その他の時刻表現については、たとえその時刻表現が UTC からの定数オフセットを持っていたとしても、0 を返します。

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

[static] QTimeZone QTimeZone::fromCFTimeZone(CFTimeZoneRef timeZone)

CFTimeZonetimeZone のコピーを含む新しい `QTimeZone ` を生成します。

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

[static, since 6.5] QTimeZone QTimeZone::fromDurationAheadOfUtc(std::chrono::seconds offset)

[static, since 6.5] QTimeZone QTimeZone::fromSecondsAheadOfUtc(int offset)

UTCよりoffset (固定値)秒進んだ時刻を、秒単位で返します。

UTCからのoffset は-16時間から+16時間の範囲内でなければなりません。それ以外の場合、無効なタイムゾーンが返されます。返されるQTimeZone は、システム提供または標準データに裏付けられたタイムゾーンではなく、軽量な時刻表現です。

オフセットが 0 の場合、返されるインスタンスの `timeSpec()` は `Qt::UTC` になります。それ以外の場合、`offset ` が有効であれば、`timeSpec()` は `Qt::OffsetFromUTC` になります。無効なタイムゾーンが返された場合、その `timeSpec()` は `Qt::TimeZone ` になります。

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

QTimeZone(int)、asBackendZone()、fixedSecondsAheadOfUtc()、MinUtcOffsetSecs 、およびMaxUtcOffsetSecsも参照してください 。

[static] QTimeZone QTimeZone::fromNSTimeZone(const NSTimeZone *timeZone)

NSTimeZonetimeZone のコピーを含む新しいQTimeZone を生成します。

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

[static, since 6.4] QTimeZone QTimeZone::fromStdTimeZonePtr(const std::chrono::time_zone *timeZone)

timeZone と同じタイムゾーンを表す `QTimeZone ` オブジェクトを返します。timeZone の IANA ID は、利用可能なシステム ID のいずれかでなければなりません。そうでない場合、無効なタイムゾーンが返されます。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

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

[since 6.8] bool QTimeZone::hasAlternativeName(QByteArrayView alias) const

alias がこのタイムゾーンの別名である場合、true を返します。

IANA(旧Olson)データベースでは、その歴史の中で一部のタイムゾーンの名称が変更されています。また、1970年以前は名称が異なっていたものの、現在は同義として扱われているタイムゾーンもいくつかあります。 一部のバックエンドでは、1970年以前のデータが残っている場合があり、後者のケースでは異なるタイムゾーンとして扱われることがあります。また、id() によってのみ区別できるタイムゾーンとして扱われる場合もあります。このメソッドは、ある ID が(少なくとも1970年以降において)このタイムゾーンオブジェクトが記述するタイムゾーンと同じものを指しているかどうかを判定します。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

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

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

bool QTimeZone::hasDaylightTime() const

そのタイムゾーンで過去に夏時間が実施されたことがある場合、true を返します。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

isDaylightTime() およびdaylightTimeOffset()も参照してください 。

bool QTimeZone::hasTransitions() const

システムのバックエンドがトランジションの取得に対応している場合、true を返します。

トランジションとは、タイムゾーンにおける変更のことです。これらは、夏時間が開始または終了したとき、あるいは当局がタイムゾーンのオフセットを変更したときに発生します。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

注:これは 、このオブジェクトによって記述されるタイムゾーンのプロパティではなく、通常はシステムライブラリなどから、そのゾーンに関するデータを提供するバックエンドのプロパティです。これは、他の遷移関連関数が何かを提供できるかどうかを示すものです。

関連項目: nextTransition()、previousTransition()、およびtransitions()。

[static] QByteArray QTimeZone::ianaIdToWindowsId(const QByteArray &ianaId)

指定されたianaId に対応するWindows IDを返します。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

windowsIdToDefaultIanaId() およびwindowsIdToIanaIds()も参照してください 。

QByteArray QTimeZone::id() const

そのタイムゾーンのIANA IDを返します。

IANA ID はすべてのプラットフォームで使用されます。Windows では、これらは Windows ID から、そのタイムゾーンおよび地域に最も適合する IANA ID に変換されます。

このタイムゾーンインスタンスがIANA IDから構築されていない場合、そのIDは構築方法によって決定されます。ほとんどの場合、インスタンスの構築時に渡されたIDが使用されます。(カスタムゾーンのコンストラクタは、渡されたIDを使用しますが、これはIANA IDであってはなりません。)ただし、2つの例外があります。

  • 秒単位のUTCオフセットのみを渡して構築されたインスタンスには、構築時にIDが渡されません。
  • IANA IDのみを受け取るコンストラクタは、実際にはIANA IDではない一部のUTCオフセットIDも受け入れます。これらに対する処理は、最初の例外と同様に、対応するオフセットを秒単位で渡すことと同等です。

これら2つの例外の場合、指定されたオフセットを持つIANA UTCオフセットゾーンが存在すれば、コンストラクタに渡された(非IANAの)UTCオフセットIDとは異なる場合であっても、生成されたインスタンスはそのIANAゾーンのIDを使用します。 そうでない場合、インスタンスはそのオフセットから合成された ID を使用します。形式は UTC±hh:mm:ss で、秒または分が 0 の場合は末尾の :00 は省略されます。これもまた、コンストラクタに渡された UTC オフセット ID とは異なる場合があります。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

bool QTimeZone::isDaylightTime(const QDateTime &atDateTime) const

指定されたatDateTime の時点で夏時間が適用されていた場合、true を返します。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

hasDaylightTime() およびdaylightTimeOffset()も参照してください 。

[static] bool QTimeZone::isTimeZoneIdAvailable(QByteArrayView ianaId)

指定されたタイムゾーンianaId がこのシステム上で利用可能な場合、true を返します。

これは、実際には IANA ID ではない一部のテキスト、特に UTC オフセット ID や、availableTimeZoneIds() にリストされていないサポートされている IANA ID の既知の別名について当てはまる場合があります。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

availableTimeZoneIds() およびhasAlternativeName()も参照してください 。

[constexpr noexcept, since 6.5] bool QTimeZone::isUtcOrFixedOffset() const

timeSpec() の結果がQt::UTC またはQt::OffsetFromUTC の場合、true を返します。

これが true の場合、時刻の記述は時間の経過とともに変化しません。これは、現地時間やタイムゾーンで発生しうる季節的な夏時間への変更などには当てはまりません。このことを把握しておけば、呼び出し側のコードでその他の様々なチェックを行う必要がなくなる場合があります。

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

[static constexpr noexcept, since 6.5] bool QTimeZone::isUtcOrFixedOffset(Qt::TimeSpec spec)

spec がQt::UTC またはQt::OffsetFromUTC の場合、true を返します。

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

bool QTimeZone::isValid() const

このタイムゾーンが有効な場合、true を返します。

QTimeZone::OffsetData QTimeZone::nextTransition(const QDateTime &afterDateTime) const

指定されたafterDateTime の直後の最初のタイムゾーン遷移を返します。これは、遷移時刻がわかっており、その直後の遷移を見つけたい場合に特に役立ちます。

指定されたafterDateTime の後にトランジションが存在しない場合、無効なOffsetData が返され、そのatUtc として無効なQDateTime が設定されます。

指定されたafterDateTime は排他的です。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

hasTransitions()、previousTransition()、およびtransitions()も参照してください 。

QTimeZone::OffsetData QTimeZone::offsetData(const QDateTime &forDateTime) const

指定されたforDateTime における有効なオフセットの詳細を返します。

これは、abbreviation() を呼び出すことや、3つのオフセット関数を個別に呼び出すことと同等ですが、より効率的である可能性があり、略語のローカライズ結果が異なる場合があります。指定された日時に対してこのデータが利用できない場合、無効なOffsetData が返され、そのatUtc として無効なQDateTime が設定されます。

このメソッドは、機能timezone が有効になっている場合にのみ利用可能です。

offsetFromUtc()、standardTimeOffset()、daylightTimeOffset()、およびabbreviation()も参照してください 。

int QTimeZone::offsetFromUtc(const QDateTime &atDateTime) const

指定されたatDateTime における有効なオフセットの合計、すなわち、現地時間を算出するためにUTCに加算すべき秒数を返します。これには、適用されている可能性のある夏時間(DST)のオフセットも含まれます。つまり、指定された日時におけるstandardTimeOffset()とdaylightTimeOffset()の合計値となります。

たとえば、タイムゾーン「Europe/Berlin」の場合、標準時のオフセットは +3600 秒、夏時間のオフセットも +3600 秒です。 標準時間中は、offsetFromUtc() は +3600 (UTC+01:00) を返し、夏時間中は +7200 (UTC+02:00) を返します。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

standardTimeOffset() およびdaylightTimeOffset()も参照してください 。

QTimeZone::OffsetData QTimeZone::previousTransition(const QDateTime &beforeDateTime) const

指定された「beforeDateTime 」の直前のタイムゾーン遷移を返します。これは、遷移時刻がわかっており、その直前の遷移を探したい場合に特に役立ちます。

指定されたbeforeDateTime より前のトランジションが存在しない場合、無効なOffsetData が返され、そのatUtc には無効なQDateTime が設定されます。

指定されたbeforeDateTime は排他的です。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

hasTransitions()、nextTransition()、およびtransitions()も参照してください 。

int QTimeZone::standardTimeOffset(const QDateTime &atDateTime) const

指定されたatDateTime における標準時間オフセット、すなわちUTCに加算して現地の標準時間を算出するための秒数を返します。これには、適用されている可能性のある夏時間(DST)のオフセットは含まれません。

たとえば、タイムゾーン「Europe/Berlin」の場合、標準時刻オフセットは+3600秒です。標準時刻期間および夏時間(DST)期間のいずれにおいても、offsetFromUtc()は+3600(UTC+01:00)を返します。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

offsetFromUtc() およびdaylightTimeOffset()も参照してください 。

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

このタイムゾーンインスタンスをother と入れ替えます。この操作は非常に高速で、失敗することはありません。

[static] QTimeZone QTimeZone::systemTimeZone()

ローカルシステム時刻を表すQTimeZone オブジェクトを返します。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。返されるインスタンスは、タイムゾーンとして実装されていますが、通常は軽量な時刻表現であるQTimeZone(QTimeZone::LocalTime) と同等です。

返されるオブジェクトは、その後のシステムタイムゾーンの変更を反映して変化することはありません。これは、asBackendZone() が呼び出された時点で有効だったローカル時間を表します。Qt XML がコンパイルされたバックエンドが依存するタイムゾーンデータが欠落しているなど、設定が不適切なシステムでは、このオブジェクトが無効になる可能性があります。そのような場合、警告が出力されます。

utc()、Initialization 、asBackendZone()、およびsystemTimeZoneId()も参照してください 。

[static] QByteArray QTimeZone::systemTimeZoneId()

現在のシステムのタイムゾーンの IANA ID を返します。

systemTimeZone() やid() を呼び出すのと同じですが、それを取得するための計算の一部を省略する場合があります。返されたバイト配列からQTimeZone を構築すると、systemTimeZone() と同じ結果が得られます。

バックエンドが正しいシステムゾーンを特定できない場合、結果は空になります。この場合、systemTimeZone() およびisValid() は false となり、systemTimeZone() のいずれかのメソッドが呼び出されると警告が出力されます。

バックエンドが正しいシステムゾーンを特定できるが、その名前を特定できない場合、空のバイト配列が返されます。たとえば、Windows では、システムのネイティブ ID が IANA ID に変換されますが、内部の変換コードがシステム ID を認識していない場合、結果は空となります。 この場合、systemTimeZone() およびisValid() は true になります。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

注: Qt 6.7以前では 、結果を決定できなかった場合、誤解を招く「UTC」という結果が返されていました。

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

[since 6.2] QLocale::Territory QTimeZone::territory() const

そのタイムゾーンの地域を返します。

AnyTerritory が返される場合は、そのタイムゾーンに既知のテリトリーの関連付けがないことを意味します。 場合によっては、そのタイムゾーンに関連付けられたテリトリーが存在しないこと(例:UTC)、あるいはそのタイムゾーンが複数のテリトリーで使用されていること(例:CET)が原因である可能性があります。また、QTimeZone バックエンドが、そのタイムゾーンがどのテリトリーに関連付けられているかを認識していない場合もあります。例えば、そのタイムゾーンが使用されているテリトリーのプライマリタイムゾーンではない場合などが挙げられます。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

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

[constexpr noexcept, since 6.5] Qt::TimeSpec QTimeZone::timeSpec() const

時刻表現のタイプを識別するQt::TimeSpec を返します。

結果が `Qt::TimeZone` の場合、この時刻記述は(システム提供または標準データに基づく)タイムゾーンです。それ以外の場合は、軽量な時刻表現です。結果が `Qt::LocalTime ` の場合、ローカル時刻を表します。詳細については、Qt::TimeSpec を参照してください。

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

fixedSecondsAheadOfUtc() およびasBackendZone()も参照してください 。

CFTimeZoneRef QTimeZone::toCFTimeZone() const

QTimeZone からCFTimeZoneを作成します。

呼び出し元は CFTimeZone オブジェクトを所有し、その解放を行う責任を負います。

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

NSTimeZone *QTimeZone::toNSTimeZone() const

QTimeZone からNSTimeZoneを作成します。

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

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

QTimeZone::OffsetDataList QTimeZone::transitions(const QDateTime &fromDateTime, const QDateTime &toDateTime) const

指定された日時間のすべてのタイムゾーン遷移のリストを返します。

指定されたfromDateTime およびtoDateTime には、その開始時刻と終了時刻の両方が含まれます。各エントリのatUtc メンバーは、他のメンバーで指定されたオフセットおよび略称が有効になる遷移の瞬間を表します。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

hasTransitions()、nextTransition()、およびpreviousTransition()も参照してください 。

[static] QTimeZone QTimeZone::utc()

UTCをタイムゾーンとして記述したQTimeZone オブジェクトを返します。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。これは、QTimeZone(int offsetSeconds) および軽量な時刻表現であるQTimeZone(QTimeZone::UTC) に 0 を渡すことと同等ですが、後者とは異なり、タイムゾーンとして実装されています。

systemTimeZone()、Initialization 、およびasBackendZone()も参照してください 。

[static] QByteArray QTimeZone::windowsIdToDefaultIanaId(const QByteArray &windowsId)

指定されたwindowsId に対するデフォルトのIANA IDを返します。

Windows IDは、複数の異なる地域における複数のIANA IDを網羅している可能性があるため、この関数は地域を問わず最も頻繁に使用されるIANA IDを返すものであり、したがって注意して使用する必要があります。通常は、特定の地域に対するデフォルト値を要求するのが最善です。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

ianaIdToWindowsId() およびwindowsIdToIanaIds()も参照してください 。

[static] QByteArray QTimeZone::windowsIdToDefaultIanaId(const QByteArray &windowsId, QLocale::Territory territory)

指定されたwindowsId およびterritory に対するデフォルトのIANA IDを返します。

Windows IDは、特定の地域内で複数のIANA IDを網羅している場合があるため、その地域で最も頻繁に使用されているIANA IDが返されます。

特別なケースとして、AnyTerritory は、特定の地域と関連付けられていない IANA ID のデフォルト値を返し、World は、指定されたwindowsId と特定の関連付けがない地域におけるそのデフォルト値を返します。

返り値が空の場合、このwindowsId に対して、指定されたterritory に固有の IANA ID が存在しません。この場合、windowsIdToDefaultIanaId(windowsId) にフォールバックするのが妥当です。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

ianaIdToWindowsId()、windowsIdToIanaIds()、およびterritory()も参照してください 。

[static] QList<QByteArray> QTimeZone::windowsIdToIanaIds(const QByteArray &windowsId)

指定されたwindowsId に対応するすべてのIANA IDを返します。

返されるリストはアルファベット順に並べ替えられています。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

ianaIdToWindowsId() およびwindowsIdToDefaultIanaId()も参照してください 。

[static] QList<QByteArray> QTimeZone::windowsIdToIanaIds(const QByteArray &windowsId, QLocale::Territory territory)

指定されたwindowsId およびterritory に対応するすべてのIANA IDを返します。

特例として、AnyTerritory は非領土的な関連付けを持つ IANA ID を選択し、World は、指定されたwindowsId と特定の関連付けがない地域において、その のデフォルト値を選択します。

返されるリストは使用頻度の順、つまり、その地域内でのゾーンの規模が大きいものから順にリストされます。

このメソッドは、timezone 機能が有効になっている場合にのみ利用可能です。

ianaIdToWindowsId()、windowsIdToDefaultIanaId()、およびterritory()も参照してください 。

[noexcept] QTimeZone &QTimeZone::operator=(QTimeZone &&other)

other をこのQTimeZone インスタンスに移動・割り当てし、そのデータの所有権をこのインスタンスに移します。

QTimeZone &QTimeZone::operator=(const QTimeZone &other)

代入演算子。これに `other ` を代入します。

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

const int QTimeZone::MaxUtcOffsetSecs

UTCからのタイムゾーンオフセットは、これ以上にならないものと想定されています。

21世紀初頭のタイムゾーンの中で最大のUTCオフセットは+14時間(クリスマス島、キリバス、キリティマティ)であり、グリニッジ標準時より東に14時間進んでいます。

歴史的に見ると、1867年にロシアがアラスカをアメリカに売却する以前、アラスカはロシアと同じ日付を採用していたため、グリニッジ標準時より東へ15時間以上のオフセットがありました。アラスカでは現地の平均太陽時が使用されていたため、オフセットは変動していましたが、いずれもグリニッジ標準時より東へ16時間以内でした。

MinUtcOffsetSecsも参照のこと 。

const int QTimeZone::MinUtcOffsetSecs

UTCからのタイムゾーンオフセットは、これより小さくならないことが想定されています。

21世紀初頭のタイムゾーンの中で、UTCからのオフセットが最も小さいのは-12時間(米国ベイカー島)であり、グリニッジより西に12時間ずれています。

歴史的に、1844年まで、フィリピン(当時はスペインの支配下にあった)はスペインのアメリカ領と同じ日付を使用していたため、グリニッジから西へ16時間近いオフセットがあった。 フィリピンでは現地の太陽平均時が使用されていたため、その一部の遠隔地ではグリニッジから西へ16時間以上離れた時間帯が採用されていた可能性もありますが、21世紀初頭のタイムゾーンの中で、その歴史がこれほど極端な時間帯にまで遡るものはありません。

MaxUtcOffsetSecsも参照のこと 。

関連する非会員

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

lhs のタイムゾーンがrhs のタイムゾーンと等しくない場合、true を返します。

2つの表現は、たとえすべての時点の表現が一致していても、内部的な記述が異なれば異なるものとみなされます。特に、軽量な時刻表現はタイムゾーンと一致する場合がありますが、この2つは等しくありません。

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

lhs のタイムゾーンがrhs のタイムゾーンと等しい場合、true を返します。

2つの表現は、たとえすべての時点の表現が一致していても、内部的な記述が異なれば異なるものとみなされます。特に、軽量な時刻表現はタイムゾーンと一致する場合がありますが、両者は等しくありません。

© 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.