QDateTime Class
Die Klasse QDateTime bietet Datums- und Zeitfunktionen. Mehr...
Kopfzeile: | #include <QDateTime> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QDateTime ist Teil von Implicitly Shared Classes.
Diese Klasse ist schwach vergleichbar.
Hinweis: Alle Funktionen in dieser Klasse sind reentrant.
Öffentliche Typen
(since 6.7) enum class | TransitionResolution { Reject, RelativeToBefore, RelativeToAfter, PreferBefore, PreferAfter, …, LegacyBehavior } |
enum class | YearRange { First, Last } |
Öffentliche Funktionen
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) |
Statische öffentliche Mitglieder
(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) |
Verwandte Nicht-Mitglieder
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) |
Detaillierte Beschreibung
Ein QDateTime-Objekt kodiert ein Kalenderdatum und eine Uhrzeit (eine "datetime") in Übereinstimmung mit einer Zeitdarstellung. Es kombiniert Eigenschaften der Klassen QDate und QTime. Es kann die aktuelle Datumszeit aus der Systemuhr lesen. Sie bietet Funktionen zum Vergleich von Datumszeiten und zur Manipulation einer Datumszeit durch Hinzufügen einer Anzahl von Sekunden, Tagen, Monaten oder Jahren.
QDateTime kann Datumszeiten in Bezug auf local time, auf UTC, auf eine bestimmte offset from UTC oder auf eine bestimmte time zone beschreiben. Jede dieser Zeitdarstellungen kann in einer geeigneten Instanz der Klasse QTimeZone gekapselt werden. Zum Beispiel wird eine Zeitzone "Europa/Berlin" die Sommerzeitregeln anwenden, die in Deutschland verwendet werden. Im Gegensatz dazu ist eine feste Abweichung von der UTC von +3600 Sekunden der UTC um eine Stunde voraus (in der ISO-Standardnotation gewöhnlich als "UTC+01:00" geschrieben), ohne dass es zu Komplikationen mit der Sommerzeit kommt. Wenn entweder die Ortszeit oder eine bestimmte Zeitzone verwendet wird, werden Zeitzonenübergänge (siehe below) berücksichtigt. Die Funktion timeSpec() einer QDateTime gibt Auskunft darüber, welche der vier Arten der Zeitdarstellung verwendet wird; die Funktion timeRepresentation() liefert eine vollständige Beschreibung dieser Zeitdarstellung als QTimeZone.
Ein QDateTime-Objekt wird typischerweise entweder durch explizite Angabe von Datum und Uhrzeit im Konstruktor oder durch Verwendung einer statischen Funktion wie currentDateTime() oder fromMSecsSinceEpoch() erzeugt. Das Datum und die Uhrzeit können mit setDate() und setTime() geändert werden. Eine Datumszeit kann auch mit der Funktion setMSecsSinceEpoch() gesetzt werden, die die Zeit in Millisekunden seit dem Beginn des Jahres 1970 in UTC ermittelt. Die Funktion fromString() gibt eine QDateTime zurück, die eine Zeichenkette und ein Datumsformat enthält, das zur Interpretation des Datums in der Zeichenkette verwendet wird.
QDateTime::currentDateTime() gibt eine QDateTime zurück, die das aktuelle Datum und die aktuelle Uhrzeit in Bezug auf eine bestimmte Zeitdarstellung, z. B. die Ortszeit (Standard), angibt. QDateTime::currentDateTimeUtc() gibt eine QDateTime zurück, die das aktuelle Datum und die aktuelle Uhrzeit in Bezug auf UTC ausdrückt; sie ist äquivalent zu QDateTime::currentDateTime(QTimeZone::UTC)
.
Die Funktionen date() und time() ermöglichen den Zugriff auf den Datums- und Zeitteil der Datetime. Die gleiche Information wird im Textformat von der Funktion toString() bereitgestellt.
QDateTime bietet einen vollständigen Satz von Operatoren, um zwei QDateTime-Objekte zu vergleichen, wobei kleiner für früher und größer für später steht.
Sie können eine Datetime mit addMSecs() um eine bestimmte Anzahl von Millisekunden, mit addSecs() um Sekunden oder mit addDays() um Tage erhöhen (oder verringern). In ähnlicher Weise können Sie addMonths() und addYears() verwenden. Die Funktion daysTo() gibt die Anzahl der Tage zwischen zwei Zeitpunkten zurück, secsTo() gibt die Anzahl der Sekunden zwischen zwei Zeitpunkten zurück, und msecsTo() gibt die Anzahl der Millisekunden zwischen zwei Zeitpunkten zurück. Diese Operationen berücksichtigen die Sommerzeit (DST) und andere Zeitzonenübergänge, falls zutreffend.
Verwenden Sie toTimeZone(), um eine Datumszeit in einer anderen Zeitdarstellung neu auszudrücken. Durch die Übergabe einer leichtgewichtigen QTimeZone, die die Ortszeit, UTC oder einen festen Offset von UTC darstellt, können Sie die Datumszeit konvertieren, um die entsprechende Zeitdarstellung zu verwenden; oder Sie können eine vollständige Zeitzone übergeben (deren timeSpec() Qt::TimeZone
ist), um diese stattdessen zu verwenden.
Anmerkungen
Hinweis: QDateTime berücksichtigt keine Schaltsekunden.
Hinweis: Alle Konvertierungen in und aus String-Formaten werden mit dem C-Locale durchgeführt. Für lokalisierte Konvertierungen, siehe QLocale.
Hinweis: Im Gregorianischen Kalender gibt es kein Jahr 0. Daten in diesem Jahr werden als ungültig betrachtet. Das Jahr -1 ist das Jahr "1 vor Christus" oder "1 vor der gemeinsamen Zeitrechnung". Der Tag vor dem 1. Januar 1 CE ist der 31. Dezember 1 BCE.
Hinweis: Die Verwendung der Ortszeit (Standardeinstellung) oder einer bestimmten Zeitzone bedeutet, dass Probleme mit transitions gelöst werden müssen. Infolgedessen können Operationen mit solchen QDateTime-Instanzen (insbesondere ihre Erstellung) teurer sein als die entsprechenden Operationen bei Verwendung von UTC oder eines festen Offsets von UTC.
Bereich gültiger Daten
Der Bereich der Werte, die QDateTime darstellen kann, hängt von der internen Speicherimplementierung ab. QDateTime wird derzeit in einem qint64 als serieller msecs-Wert gespeichert, der das Datum und die Uhrzeit kodiert. Dies schränkt den Datumsbereich auf etwa ±292 Millionen Jahre ein, verglichen mit dem QDate Bereich von ±2 Milliarden Jahren. Bei der Erstellung einer QDateTime mit extremen Werten muss darauf geachtet werden, dass der Speicher nicht überläuft. Der genaue Bereich der unterstützten Werte variiert je nach der verwendeten Zeitdarstellung.
Verwendung von Zeitzonen
QDateTime verwendet die Zeitzoneninformationen des Systems, um die aktuelle lokale Zeitzone und ihre Abweichung von der UTC zu bestimmen. Wenn das System nicht korrekt konfiguriert oder nicht auf dem neuesten Stand ist, wird QDateTime falsche Ergebnisse liefern.
QDateTime verwendet ebenfalls die vom System bereitgestellten Informationen, um die Abweichung anderer Zeitzonen von UTC zu bestimmen. Wenn diese Informationen unvollständig oder veraltet sind, wird QDateTime falsche Ergebnisse liefern. Siehe die QTimeZone Dokumentation für weitere Details.
Auf modernen Unix-Systemen bedeutet dies, dass QDateTime normalerweise genaue Informationen über historische Übergänge (einschließlich Sommerzeit, siehe unten) hat, wann immer dies möglich ist. Unter Windows, wo das System keine historischen Zeitzonendaten unterstützt, wird die historische Genauigkeit in Bezug auf Zeitzonenübergänge, insbesondere einschließlich der Sommerzeit, nicht beibehalten. Wenn Sie jedoch Qt mit der ICU-Bibliothek bauen, wird QTimeZone mit der gleichen Zeitzonendatenbank ausgestattet, wie sie unter Unix verwendet wird.
Zeitzonen-Übergänge
QDateTime berücksichtigt Zeitzonenübergänge, sowohl die Übergänge zwischen Standardzeit und Sommerzeit (DST) als auch die Übergänge, die entstehen, wenn eine Zone ihren Standardversatz ändert. Wenn der Übergang zum Beispiel um 2 Uhr morgens stattfindet und die Uhr auf 3 Uhr vorgeht, dann gibt es eine "fehlende" Stunde von 02:00:00 bis 02:59:59.999. Ein solcher Übergang wird als "spring forward" bezeichnet, und die übersprungenen Zeiten haben keine Bedeutung. Bei einem umgekehrten Übergang, dem so genannten "Fallback", wird ein Zeitintervall wiederholt, zuerst in der alten Zone (in der Regel Sommerzeit), dann in der neuen Zone (in der Regel Standardzeit), so dass die Zeiten in diesem Intervall mehrdeutig sind.
Einige Zonen verwenden eine "umgekehrte" Sommerzeit, d. h. im Sommer wird die Standardzeit und im Winter die Sommerzeit (mit einem geringeren Offset) verwendet. In solchen Zonen findet die Vorverlegung im Frühjahr statt und überspringt eine Stunde, ist aber ein Übergang aus der Sommerzeit, während die Rückverlegung eine Stunde im Herbst wiederholt, aber ein Übergang zur Sommerzeit ist.
Bei der Umrechnung von einer UTC-Zeit (oder einer Zeit mit festem Abstand zur UTC) gibt es in jeder Zeitzone immer ein eindeutiges gültiges Ergebnis. Kombiniert man jedoch ein Datum und eine Uhrzeit zu einer Datumszeit, die in Bezug auf die Ortszeit oder eine bestimmte Zeitzone ausgedrückt wird, kann das nominale Ergebnis in einen Übergang fallen, wodurch es entweder ungültig oder mehrdeutig wird. Methoden, bei denen diese Situation auftreten kann, nehmen einen resolve
Parameter: dieser wird immer ignoriert, wenn die angeforderte Datetime gültig und eindeutig ist. Siehe TransitionResolution für die Optionen, die Sie damit kontrollieren können. Vor Qt 6.7 wurde das Äquivalent von LegacyBehavior ausgewählt.
Für das übersprungene Intervall einer Sprungvorwärtsbewegung ergibt die Interpretation der angeforderten Zeit mit einem der beiden Offsets eine tatsächliche Zeit, zu der der andere Offset in Gebrauch war; die Übergabe von TransitionResolution::RelativeToBefore
für resolve
führt also tatsächlich zu einer Zeit nach dem Übergang, die die angeforderte Darstellung gehabt hätte, wenn der Übergang nicht stattgefunden hätte. Ebenso führt TransitionResolution::RelativeToAfter
für resolve
zu einem Zeitpunkt vor dem Übergang, der die gewünschte Darstellung gehabt hätte, wenn der Übergang früher stattgefunden hätte.
Wenn QDateTime arithmetische Berechnungen durchführt, wie bei addDay() oder addSecs(), wird darauf geachtet, ein gültiges Ergebnis zu erhalten. An einem Tag, an dem es einen Sprung von 02:00 Uhr auf 03:00 Uhr gibt, ergibt die Addition einer Sekunde zu 01:59:59 Uhr 03:00:00. Addiert man einen Tag zu 02:30 am Vortag, erhält man 03:30 am Tag des Übergangs, während die Subtraktion eines Tages, durch Aufruf von addDay(-1)
, zu 02:30 am Folgetag 01:30 am Tag des Übergangs ergibt. Während addSecs() eine Zeitverschiebung um die angegebene Anzahl von Sekunden liefert, passt addDays() das Datum und die Zeit nur dann an, wenn andernfalls ein ungültiges Ergebnis erzielt würde. Wendet man addDays(1)
auf 03:00 Uhr am Tag vor der Frühjahrsumstellung an, so erhält man einfach 03:00 Uhr am Tag der Umstellung, obwohl letzterer nur 23 Stunden nach dem ersteren liegt; addSecs(24 * 60 * 60)
hingegen erhält 04:00 Uhr am Tag der Umstellung, da dies 24 Stunden später ist. Typische Übergänge machen einige Tage 23 oder 25 Stunden lang.
Für Datumszeiten, die das System time_t
darstellen kann (von 1901-12-14 bis 2038-01-18 auf Systemen mit 32-Bit time_t
; für den gesamten Bereich, den QDateTime darstellen kann, wenn der Typ 64-Bit ist), werden die Standard-System-APIs verwendet, um den Versatz der lokalen Zeit von UTC zu bestimmen. Für Datumszeiten, die nicht von diesen System-APIs behandelt werden (möglicherweise einschließlich einiger im Bereich time_t
), wird QTimeZone::systemTimeZone() verwendet, falls verfügbar, oder es wird eine bestmögliche Schätzung vorgenommen. In jedem Fall hängt die verwendete Offset-Information vom System ab und kann unvollständig oder, für vergangene Zeiten, historisch ungenau sein. Außerdem können sich die Zeitverschiebungen und die Regeln für die Sommerzeit für zukünftige Daten ändern, bevor dieses Datum erreicht wird.
Ganztägige Übergänge
Einige wenige Zonen haben im Zuge der Verschiebung der Internationalen Datumsgrenze ganze Tage übersprungen oder wiederholt. In diesen Fällen weiß daysTo() nichts von der Duplizierung oder Lücke und verwendet einfach den Unterschied im Kalenderdatum; im Gegensatz dazu kennen msecsTo() und secsTo() den wahren Zeitabstand. Ebenso entsprechen addMSecs() und addSecs() direkt der verstrichenen Zeit, während addDays(), addMonths() und addYears() dem nominellen Kalender folgen, abgesehen von den Fällen, in denen die Landung in einer Lücke oder Verdoppelung die Lösung einer Zweideutigkeit oder Ungültigkeit aufgrund einer Verdoppelung oder Auslassung erfordert.
Anmerkung: Tage, die während eines Kalenderwechsels "verloren" gehen, wie z.B. von Julianisch auf Gregorianisch, haben keinen Einfluss auf QDateTime. Obwohl die beiden Kalender Daten unterschiedlich beschreiben, werden die aufeinanderfolgenden Tage über den Wechsel hinweg durch aufeinanderfolgende QDate Instanzen beschrieben, jede einen Tag später als die vorhergehende, wie von beiden Kalendern oder durch ihre toJulianDay() Werte beschrieben. Im Gegensatz dazu ändert eine Zone, die einen Tag überspringt oder verdoppelt, ihre Beschreibung der Zeit, nicht des Datums, da sie dies um ganze 24 Stunden tut.
Abweichung von UTC
Die Abweichung von UTC wird in Sekunden östlich von Greenwich gemessen. Der Zeitpunkt, der durch ein bestimmtes Datum und eine bestimmte Uhrzeit beschrieben wird, wie z. B. Mittag an einem bestimmten Tag, hängt von der verwendeten Zeitdarstellung ab. Die Zeitangaben mit einer größeren Abweichung von der UTC beschreiben einen früheren Zeitpunkt und die mit einer geringeren Abweichung einen späteren Zeitpunkt für eine bestimmte Kombination von Datum und Uhrzeit.
Es gibt keine explizite Größenbeschränkung für die Abweichung von der UTC, aber es gibt eine implizite Beschränkung, wenn die Methoden toString() und fromString() verwendet werden, die das Format ±hh:mm verwenden, wodurch der Bereich effektiv auf ± 99 Stunden und 59 Minuten und nur ganze Minuten begrenzt wird. Beachten Sie, dass derzeit keine Zeitzone einen Offset außerhalb des Bereichs von ±14 Stunden hat und alle bekannten Offsets Vielfache von fünf Minuten sind. Historische Zeitzonen haben einen größeren Bereich und können Versätze haben, die auch Sekunden umfassen; letztere können nicht originalgetreu in Strings dargestellt werden.
Siehe auch QDate, QTime, QDateTimeEdit, und QTimeZone.
Dokumentation der Mitgliedstypen
[since 6.7]
enum class QDateTime::TransitionResolution
Diese Aufzählung wird verwendet, um Datumszeitkombinationen aufzulösen, die in Timezone transitions fallen.
Bei der Konstruktion einer Datumszeit, die als Ortszeit oder in einer Zeitzone mit Sommerzeit angegeben ist, oder bei der Überarbeitung einer solchen mit setDate(), setTime() oder setTimeZone() können die angegebenen Parameter eine Zeitdarstellung implizieren, die entweder keine Bedeutung hat oder in der Zone zwei Bedeutungen hat. Solche Zeitdarstellungen werden als im Übergang befindlich beschrieben. In beiden Fällen können wir einfach eine ungültige datetime zurückgeben, um anzuzeigen, dass die Operation nicht definiert ist. Im mehrdeutigen Fall können wir alternativ eine der beiden Zeiten auswählen, die gemeint sein könnten. Wenn es keine Bedeutung gibt, können wir einen Zeitpunkt auf beiden Seiten auswählen, der plausibel gemeint sein könnte. Wenn wir zum Beispiel von einem früheren Zeitpunkt ausgehen, können wir den Zeitpunkt nach dem Übergang wählen, der tatsächlich die angegebene Zeitspanne nach dem fraglichen früheren Zeitpunkt liegt. Die hier angegebenen Optionen legen fest, wie eine solche Auswahl durchgeführt wird.
Konstante | Wert | Beschreibung |
---|---|---|
QDateTime::TransitionResolution::Reject | 0 | Behandelt jeden Zeitpunkt in einem Übergang als ungültig. Entweder ist er wirklich ungültig, oder er ist mehrdeutig. |
QDateTime::TransitionResolution::RelativeToBefore | 1 | Wählt eine Zeit aus, als würde man von einer Zeit vor dem Übergang vorwärts gehen. Dies interpretiert die angeforderte Zeit unter Verwendung des vor dem Übergang gültigen Offsets und konvertiert das Ergebnis, falls erforderlich, in den zum resultierenden Zeitpunkt gültigen Offset. |
QDateTime::TransitionResolution::RelativeToAfter | 2 | Wählen Sie eine Zeit, als ob Sie von einem Zeitpunkt nach dem Übergang rückwärts gehen würden. Dies interpretiert die angeforderte Zeit anhand des nach dem Übergang geltenden Offsets und wandelt das Ergebnis gegebenenfalls in den zum resultierenden Zeitpunkt geltenden Offset um. |
QDateTime::TransitionResolution::PreferBefore | 3 | Wählt einen Zeitpunkt vor dem Übergang aus, |
QDateTime::TransitionResolution::PreferAfter | 4 | Wählt eine Zeit nach dem Übergang aus. |
QDateTime::TransitionResolution::PreferStandard | 5 | Wählt eine Zeit auf der Standardzeitseite des Übergangs aus. |
QDateTime::TransitionResolution::PreferDaylightSaving | 6 | Wählt eine Zeit auf der Sommerzeitseite der Umstellung aus. |
QDateTime::TransitionResolution::LegacyBehavior | RelativeToBefore | Ein Alias für RelativeToBefore, der als Standard für TransitionResolution-Parameter verwendet wird, da dies am ehesten dem Verhalten vor Qt 6.7 entspricht. |
Für addDays(), addMonths() oder addYears() wird und wurde (meistens) RelativeToBefore
verwendet, wenn eine positive Anpassung hinzugefügt wurde, und RelativeToAfter
, wenn eine negative Anpassung hinzugefügt wurde.
Hinweis: In Zeitzonen, in denen die Sommerzeit die Abweichung von UTC im Sommer erhöht (bekannt als "positive DST"), ist PreferStandard ein Alias für RelativeToAfter und PreferDaylightSaving für RelativeToBefore. In Zeitzonen, in denen die Sommerzeit eine Verringerung der Abweichung von der UTC im Winter ist (bekannt als "negative DST"), gilt das Umgekehrte, sofern das Betriebssystem - wie auf den meisten Plattformen - meldet, ob ein Zeitpunkt in der Sommerzeit oder in der Standardzeit liegt. Auf einigen Plattformen, auf denen selbst für Qt::TimeZone keine Übergangszeiten verfügbar sind, muss QTimeZone davon ausgehen, dass die Seite mit der geringeren Abweichung von der UTC die Standardzeit ist, so dass eine positive Sommerzeit angenommen wird.
Die folgenden Tabellen veranschaulichen, wie ein QDateTime -Konstruktor eine Anfrage für 02:30 an einem Tag, an dem die Ortszeit einen Übergang zwischen 02:00 und 03:00 hat, mit einer nominellen Standardzeit LST und einer Sommerzeit LDT auf den beiden Seiten in den verschiedenen möglichen Fällen auflöst. Die Art des Übergangs kann darin bestehen, eine Stunde zu überspringen oder sie zu wiederholen. Die Art des Übergangs und der Wert eines Parameters resolve
bestimmen, welche tatsächliche Zeit an einem bestimmten Datum gewählt wird. Zunächst der allgemeine Fall einer positiven Sommerzeit, bei dem:
Vor | 02:00-03:00 | Nach | resolve | ausgewählt |
---|---|---|---|---|
LST | Überspringen | LDT | RelativZuVor | 03:30 LDT |
LST | Überspringen | LDT | RelativZuNach | 01:30 LST |
LST | Überspringen | LDT | BevorzugenVor | 01:30 LST |
LST | Überspringen | LDT | BevorzugtNach | 03:30 UHR NACHMITTAGS |
LST | Überspringen | LDT | BevorzugenStandard | 01:30 LST |
LST | Überspringen | LDT | BevorzugenSommerzeit | 03:30 UHR MEZ |
LDT | wiederholen | LST | RelativZuVor | 02:30 LDT |
LDT | wiederholen | LST | RelativZuNach | 02:30 LST |
LDT | wiederholen | LST | BevorzugtBisher | 02.30 UHR LDT |
LDT | wiederholen | LST | BevorzugtNach | 02:30 UHR LST |
LDT | wiederholen | LST | BevorzugenStandard | 02:30 UHR LST |
LDT | wiederholen | LST | BevorzugenSommerzeit | 02:30 UHR LDT |
Zweitens der Fall einer negativen Sommerzeit, bei der LDT im Winter verwendet wird und eine Stunde übersprungen wird, um im Sommer auf LST umzustellen, und dann eine Stunde beim Übergang zurück zum Winter wiederholt wird:
LDT | Überspringen | LST | RelativZuVor | 03:30 SOMMERZEIT |
LDT | Überspringen | LST | RelativZuNach | 01:30 UHR LDT |
LDT | Überspringen | LST | BevorzugenVor | 01:30 LDT |
LDT | Überspringen | LST | BevorzugtNach | 03:30 UHR LST |
LDT | Überspringen | LST | BevorzugenStandard | 03:30 UHR LST |
LDT | Überspringen | LST | BevorzugenSommerzeit | 01:30 UHR MEZ |
LST | wiederholen | LDT | RelativZuVor | 02:30 LST |
LST | wiederholen | LDT | RelativZuNach | 02.30 UHR LDT |
LST | wiederholen | LDT | BevorzugenVor | 02:30 LST |
LST | wiederholen | LDT | BevorzugtNach | 02:30 UHR LDT |
LST | wiederholen | LDT | BevorzugenStandard | 02:30 LST |
LST | wiederholen | LDT | BevorzugenSommerzeit | 02:30 LDT |
Reject kann verwendet werden, um relevante QDateTime APIs aufzufordern, ein ungültiges Datetime-Objekt zurückzugeben, so dass Ihr Code selbst mit Übergängen umgehen kann, z. B. indem er einen Benutzer darauf aufmerksam macht, dass die von ihm ausgewählte Datumszeit in einem Übergangsintervall liegt, um ihm die Möglichkeit zu geben, einen Konflikt oder eine Unklarheit zu lösen. Code, der dies verwendet, kann die anderen oben genannten Optionen durchaus als nützlich erachten, um relevante Informationen für seine eigene (oder die des Benutzers) Lösung zu bestimmen. Wenn der Beginn oder das Ende des Übergangs oder der Zeitpunkt des Übergangs selbst die richtige Auflösung ist, können die Übergangs-APIs von QTimeZone verwendet werden, um diese Informationen zu erhalten. Sie können feststellen, ob es sich bei dem Übergang um ein wiederholtes oder übersprungenes Intervall handelt, indem Sie secsTo() verwenden, um die tatsächliche Zeit zwischen dem Mittag des vorherigen und des folgenden Tages zu messen. Das Ergebnis ist weniger als 48 Stunden für ein übersprungenes Intervall (z. B. ein spring-forward) und mehr als 48 Stunden für ein wiederholtes Intervall (z. B. ein fall-back).
Hinweis: Wenn eine andere Auflösung als "Ablehnen" angegeben wird, wird, wenn möglich, ein gültiges QDateTime Objekt zurückgegeben. Wenn die angeforderte Datumszeit in eine Lücke fällt, hat die zurückgegebene Datumszeit nicht die angeforderte time() - oder, in einigen Fällen, die date(), wenn ein ganzer Tag übersprungen wurde. Sie können also feststellen, wann eine Lücke entstanden ist, indem Sie date() und time() mit den angeforderten Werten vergleichen.
Beziehung zu anderer datetime-Software
Die datetime-APIs der Programmiersprache Python haben einen Parameter fold
, der RelativeToBefore
(fold = True
) und RelativeToAfter
(fold = False
) entspricht.
Der Vorschlag Temporal
, der den Date
von JavaScript ersetzen soll, bietet vier Optionen für die Auflösung eines Übergangs als Wert für einen disambiguation
Parameter. 'reject'
löst eine Ausnahme aus, was in etwa dem Reject
entspricht, das ein ungültiges Ergebnis liefert. Die Optionen 'earlier'
und 'later'
entsprechen PreferBefore
und PreferAfter
. Die Option 'compatible'
entspricht RelativeToBefore
(und fold = True
in Python).
Diese Aufzählung wurde in Qt 6.7 eingeführt.
Siehe auch Timezone transitions und QDateTime::TransitionResolution.
enum class QDateTime::YearRange
Dieser Aufzählungstyp beschreibt den Bereich der Jahre (im Gregorianischen Kalender), die durch QDateTime dargestellt werden können:
Konstante | Wert | Beschreibung |
---|---|---|
QDateTime::YearRange::First | -292275056 | Die späteren Teile dieses Jahres sind darstellbar |
QDateTime::YearRange::Last | +292278994 | Die früheren Teile dieses Jahres sind darstellbar |
Alle Daten, die genau zwischen diesen beiden Jahren liegen, sind ebenfalls darstellbar. Beachten Sie jedoch, dass der Gregorianische Kalender kein Jahr Null hat.
Dokumentation der Mitgliedsfunktionen
QString QDateTime::toString(QStringView format, QCalendar cal) const
QString QDateTime::toString(const QString &format, QCalendar cal) const
Gibt die Datetime als Zeichenkette zurück. Der Parameter format bestimmt das Format der Ergebniszeichenkette. Wenn cal übergeben wird, bestimmt er den Kalender, der zur Darstellung des Datums verwendet wird; der Standardwert ist Gregorianisch. Vor Qt 5.14 gab es keinen cal Parameter und der Gregorianische Kalender wurde immer verwendet. Siehe QTime::toString() und QDate::toString() für die unterstützten Spezifizierer für Zeit bzw. Datum im Parameter format.
Jede in einfache Anführungszeichen eingeschlossene Zeichenfolge wird wortwörtlich in die Ausgabezeichenfolge aufgenommen (ohne Anführungszeichen), auch wenn sie Formatierungszeichen enthält. Zwei aufeinanderfolgende einfache Anführungszeichen ("''") werden in der Ausgabe durch ein einfaches Anführungszeichen ersetzt. Alle anderen Zeichen in der Formatzeichenfolge werden wortwörtlich in die Ausgabezeichenfolge übernommen.
Formate ohne Trennzeichen (z. B. "ddMM") werden unterstützt, müssen aber mit Vorsicht verwendet werden, da die resultierenden Zeichenketten nicht immer zuverlässig lesbar sind (wenn z. B. "dM" "212" ergibt, könnte dies entweder den 2. Dezember oder den 21. Februar bedeuten).
Beispiel für formatierte Zeichenfolgen (unter der Annahme, dass QDateTime der 21. Mai 2001 14:13:09.120 ist):
Format | Ergebnis |
---|---|
tt.MM.jjjj | 21.05.2001 |
ddd MMMM d yy | Di 21. Mai 01 |
hh:mm:ss.zzz | 14:13:09.120 |
hh:mm:ss.z | 14:13:09.12 |
h:m:s ap | 2:13:9 pm |
Wenn die Datumsangabe ungültig ist, wird eine leere Zeichenkette zurückgegeben.
Hinweis: Die Tages- und Monatsnamen sowie die AM/PM-Indikatoren werden in Englisch angegeben (Gebietsschema C). Um lokalisierte Monats- und Tagesnamen sowie lokalisierte Formen von AM/PM zu erhalten, verwenden Sie QLocale::system().toDateTime().
Siehe auch fromString(), QDate::toString(), QTime::toString(), und QLocale::toString().
[noexcept]
QDateTime::QDateTime()
Konstruiert eine null datetime, die nominell die lokale Zeit verwendet.
Eine null datetime ist ungültig, da ihr Datum und ihre Uhrzeit ungültig sind.
Siehe auch isValid(), setMSecsSinceEpoch(), setDate(), setTime(), und setTimeZone().
[until 6.9]
QDateTime::QDateTime(QDate date, QTime time, Qt::TimeSpec spec, int offsetSeconds = 0)
Diese Funktion soll in Version 6.9 nicht mehr verwendet werden.
Verwenden Sie QDateTime(date, time)
oder QDateTime(date, time, QTimeZone::fromSecondsAheadOfUtc(offsetSeconds))
.
Konstruiert eine Datetime mit den angegebenen date und time, wobei die Zeitdarstellung durch spec und offsetSeconds Sekunden impliziert wird.
Wenn date gültig ist und time nicht, wird die Zeit auf Mitternacht gesetzt.
Wenn spec nicht Qt::OffsetFromUTC ist, wird offsetSeconds ignoriert. Wenn spec gleich Qt::OffsetFromUTC und offsetSeconds gleich 0 ist, wird timeSpec() auf Qt::UTC gesetzt, d. h. ein Offset von 0 Sekunden.
Wenn spec Qt::TimeZone ist, wird die Angabe auf Qt::LocalTime gesetzt, d. h. auf die aktuelle Systemzeitzone. Um eine Qt::TimeZone datetime zu erstellen, verwenden Sie den richtigen Konstruktor.
Wenn date außerhalb des Bereichs der durch QDateTime darstellbaren Datumsangaben liegt, ist das Ergebnis ungültig. Wenn spec gleich Qt::LocalTime ist und die Zeitzone des Systems das angegebene Datum und die Uhrzeit überspringt, ist das Ergebnis ungültig.
QDateTime::QDateTime(QDate date, QTime time, const QTimeZone &timeZone, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)
Konstruiert eine Datetime mit den angegebenen date und time, wobei die durch timeZone beschriebene Zeitdarstellung verwendet wird.
Wenn date gültig ist und time nicht, wird die Uhrzeit auf Mitternacht gesetzt. Wenn timeZone ungültig ist, ist auch die Datetime ungültig. Wenn date und time einen Zeitpunkt beschreiben, der nahe an einem Übergang für timeZone liegt, steuert resolve, wie diese Situation aufgelöst wird.
Hinweis: Vor Qt 6.7 fehlte in der Version dieser Funktion der Parameter resolve, so dass es keine Möglichkeit gab, die Mehrdeutigkeiten in Bezug auf Übergänge aufzulösen.
[since 6.5]
QDateTime::QDateTime(QDate date, QTime time, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)
Dies ist eine überladene Funktion.
Konstruiert eine Datetime mit den angegebenen date und time, wobei die lokale Zeit verwendet wird.
Wenn date gültig ist und time nicht, wird Mitternacht als Zeit verwendet. Wenn date und time einen Zeitpunkt beschreiben, der nahe an einem Übergang zur Ortszeit liegt, steuert resolve, wie diese Situation gelöst wird.
Hinweis: Vor Qt 6.7 fehlte in der Version dieser Funktion der Parameter resolve, so dass es keine Möglichkeit gab, die Mehrdeutigkeiten im Zusammenhang mit Übergängen aufzulösen.
Diese Funktion wurde in Qt 6.5 eingeführt.
[noexcept]
QDateTime::QDateTime(const QDateTime &other)
Konstruiert eine Kopie der other datetime.
[noexcept]
QDateTime::QDateTime(QDateTime &&other)
Verschiebt den Inhalt des temporären other datetime in dieses Objekt und lässt other in einem nicht spezifizierten (aber korrekten) Zustand.
[noexcept]
QDateTime::~QDateTime()
Zerstört die Zeitangabe.
QDateTime QDateTime::addDays(qint64 ndays) const
Gibt ein QDateTime Objekt zurück, das eine Datumszeit ndays Tage später als die Datumszeit dieses Objekts enthält (oder früher, wenn ndays negativ ist).
Wenn timeSpec() Qt::LocalTime oder Qt::TimeZone ist und das resultierende Datum und die Uhrzeit in die Stunde des Übergangs von der Standardzeit zur Sommerzeit fallen, dann liegt das Ergebnis genau hinter dieser Lücke, in Richtung der Umstellung. Wenn die Umstellung um 2 Uhr morgens erfolgt und die Uhr auf 3 Uhr vorwärts geht, wird das Ergebnis der Einstellung zwischen 2 und 3 Uhr so angepasst, dass es vor 2 Uhr (falls ndays < 0
) oder nach 3 Uhr (ansonsten) liegt.
Siehe auch daysTo(), addMonths(), addYears(), addSecs(), und Timezone transitions.
[since 6.4]
QDateTime QDateTime::addDuration(std::chrono::milliseconds msecs) const
Gibt ein QDateTime -Objekt zurück, das einen Zeitpunkt msecs enthält, der um Millisekunden später als der Zeitpunkt dieses Objekts liegt (oder früher, wenn msecs negativ ist).
Wenn dieser Zeitpunkt ungültig ist, wird ein ungültiger Zeitpunkt zurückgegeben.
Hinweis: Das Hinzufügen von Zeitspannen, die in std::chrono::months
oder std::chrono::years
ausgedrückt sind, führt nicht zu demselben Ergebnis, das durch die Verwendung von addMonths() oder addYears() erzielt wird. Erstere sind feste Zeitspannen, die in Bezug auf das Sonnenjahr berechnet werden; letztere verwenden die gregorianischen Kalenderdefinitionen von Monaten/Jahren.
Diese Funktion wurde in Qt 6.4 eingeführt.
Siehe auch addMSecs(), msecsTo(), addDays(), addMonths(), und addYears().
QDateTime QDateTime::addMSecs(qint64 msecs) const
Gibt ein QDateTime -Objekt zurück, das einen Zeitpunkt msecs enthält, der um Millisekunden später als der Zeitpunkt dieses Objekts liegt (oder früher, wenn msecs negativ ist).
Wenn dieser Zeitpunkt ungültig ist, wird ein ungültiger Zeitpunkt zurückgegeben.
Siehe auch addSecs(), msecsTo(), addDays(), addMonths(), und addYears().
QDateTime QDateTime::addMonths(int nmonths) const
Gibt ein QDateTime Objekt zurück, das eine Datumszeit nmonths Monate später als die Datumszeit dieses Objekts enthält (oder früher, wenn nmonths negativ ist).
Wenn timeSpec() Qt::LocalTime oder Qt::TimeZone ist und das resultierende Datum und die Uhrzeit in die Stunde des Übergangs von der Standardzeit zur Sommerzeit fallen, dann liegt das Ergebnis genau hinter dieser Lücke, in Richtung der Umstellung. Wenn die Umstellung um 2 Uhr morgens erfolgt und die Uhr auf 3 Uhr vorwärts geht, wird das Ergebnis der Einstellung zwischen 2 und 3 Uhr so angepasst, dass es vor 2 Uhr (falls nmonths < 0
) oder nach 3 Uhr (ansonsten) liegt.
Siehe auch daysTo(), addDays(), addYears(), addSecs(), und Timezone transitions.
QDateTime QDateTime::addSecs(qint64 s) const
Gibt ein QDateTime Objekt zurück, das eine Datetime s Sekunden später als die Datetime dieses Objekts enthält (oder früher, wenn s negativ ist).
Ist diese Datumszeit ungültig, wird eine ungültige Datumszeit zurückgegeben.
Siehe auch addMSecs(), secsTo(), addDays(), addMonths(), und addYears().
QDateTime QDateTime::addYears(int nyears) const
Gibt ein QDateTime Objekt zurück, das eine Datumszeit nyears Jahre später als die Datumszeit dieses Objekts enthält (oder früher, wenn nyears negativ ist).
Wenn timeSpec() Qt::LocalTime oder Qt::TimeZone ist und das resultierende Datum und die Uhrzeit in die Stunde des Übergangs von der Standardzeit zur Sommerzeit fallen, dann liegt das Ergebnis genau hinter dieser Lücke, in Richtung der Umstellung. Wenn die Umstellung um 2 Uhr morgens erfolgt und die Uhr auf 3 Uhr vorgeht, wird das Ergebnis der Einstellung zwischen 2 Uhr und 3 Uhr so angepasst, dass es vor 2 Uhr (wenn nyears < 0
) oder nach 3 Uhr (sonst) liegt.
Siehe auch daysTo(), addDays(), addMonths(), addSecs(), und Timezone transitions.
[static, since 6.5]
QDateTime QDateTime::currentDateTime(const QTimeZone &zone)
Gibt die aktuelle Uhrzeit der Systemuhr zurück, unter Verwendung der durch zone beschriebenen Zeitdarstellung. Wenn zone nicht angegeben wird, wird die lokale Zeit verwendet.
Diese Funktion wurde in Qt 6.5 eingeführt.
Siehe auch currentDateTimeUtc(), QDate::currentDate(), QTime::currentTime(), und toTimeSpec().
[static]
QDateTime QDateTime::currentDateTime()
Dies ist eine überladene Funktion.
[static]
QDateTime QDateTime::currentDateTimeUtc()
Gibt die aktuelle Uhrzeit der Systemuhr zurück, ausgedrückt in UTC.
Äquivalent zu currentDateTime(QTimeZone::UTC)
.
Siehe auch currentDateTime(), QDate::currentDate(), QTime::currentTime(), und toTimeSpec().
[static noexcept]
qint64 QDateTime::currentMSecsSinceEpoch()
Gibt die aktuelle Anzahl der Millisekunden seit dem Beginn des Jahres 1970 in UTC zurück.
Diese Zahl entspricht der POSIX-Variablen time_t, wird aber in Millisekunden statt in Sekunden angegeben.
Siehe auch currentDateTime(), currentDateTimeUtc(), und toTimeSpec().
[static noexcept]
qint64 QDateTime::currentSecsSinceEpoch()
Gibt die Anzahl der Sekunden seit dem Beginn des Jahres 1970 in UTC zurück.
Diese Zahl ist wie die POSIX-Variable time_t.
Siehe auch currentMSecsSinceEpoch().
QDate QDateTime::date() const
Gibt den Datumsteil von datetime zurück.
Siehe auch setDate(), time(), und timeRepresentation().
qint64 QDateTime::daysTo(const QDateTime &other) const
Gibt die Anzahl der Tage zwischen diesem Zeitpunkt und dem Zeitpunkt other zurück. Die Anzahl der Tage wird so gezählt, wie oft Mitternacht zwischen diesem Zeitpunkt und dem Zeitpunkt other erreicht wird. Das bedeutet, dass ein Unterschied von 10 Minuten zwischen 23:55 und 0:05 am nächsten Tag als ein Tag zählt.
Liegt der Zeitpunkt other vor diesem Zeitpunkt, ist der zurückgegebene Wert negativ.
Beispiel:
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);
Siehe auch addDays(), secsTo(), und msecsTo().
[static]
QDateTime QDateTime::fromCFDate(CFDateRef date)
Konstruiert ein neues QDateTime, das eine Kopie des CFDate date enthält.
Siehe auch toCFDate().
[static]
QDateTime QDateTime::fromMSecsSinceEpoch(qint64 msecs, const QTimeZone &timeZone)
Gibt eine Datetime zurück, die einen Zeitpunkt mit der angegebenen Anzahl msecs von Millisekunden nach dem Beginn des Jahres 1970 in UTC darstellt, wie durch timeZone beschrieben. Die Standardzeitdarstellung ist die Ortszeit.
Beachten Sie, dass es mögliche Werte für msecs gibt, die außerhalb des gültigen Bereichs von QDateTime liegen, sowohl negativ als auch positiv. Das Verhalten dieser Funktion ist für diese Werte undefiniert.
Siehe auch fromSecsSinceEpoch(), toMSecsSinceEpoch(), und setMSecsSinceEpoch().
[static]
QDateTime QDateTime::fromMSecsSinceEpoch(qint64 msecs)
Dies ist eine überladene Funktion.
[static, until 6.9]
QDateTime QDateTime::fromMSecsSinceEpoch(qint64 msecs, Qt::TimeSpec spec, int offsetSeconds = 0)
Diese Funktion soll in Version 6.9 veraltet sein.
Dies ist eine überladene Funktion.
Übergeben Sie stattdessen QTimeZone, oder lassen Sie spec und offsetSeconds weg.
Gibt eine Datetime zurück, die einen Zeitpunkt mit der angegebenen Anzahl msecs von Millisekunden nach dem Beginn des Jahres 1970 in UTC darstellt, wie durch spec und offsetSeconds beschrieben.
Beachten Sie, dass es für msecs mögliche Werte gibt, die außerhalb des gültigen Bereichs von QDateTime liegen, sowohl negative als auch positive. Das Verhalten dieser Funktion ist für diese Werte undefiniert.
Wenn spec nicht Qt::OffsetFromUTC ist, wird offsetSeconds ignoriert. Wenn spec gleich Qt::OffsetFromUTC und offsetSeconds gleich 0 ist, wird Qt::UTC als spec verwendet, da UTC einen Null-Offset hat.
Wenn spec Qt::TimeZone ist, wird Qt::LocalTime an seiner Stelle verwendet, was der Verwendung der aktuellen Systemzeitzone entspricht (aber anders dargestellt wird).
Siehe auch fromSecsSinceEpoch(), toMSecsSinceEpoch(), und setMSecsSinceEpoch().
[static]
QDateTime QDateTime::fromNSDate(const NSDate *date)
Konstruiert ein neues QDateTime, das eine Kopie des NSDate date enthält.
Siehe auch toNSDate().
[static]
QDateTime QDateTime::fromSecsSinceEpoch(qint64 secs, const QTimeZone &timeZone)
Gibt eine Datetime zurück, die einen Zeitpunkt mit der angegebenen Anzahl secs von Sekunden nach dem Beginn des Jahres 1970 in UTC darstellt, wie durch timeZone beschrieben. Die Standardzeitdarstellung ist die Ortszeit.
Beachten Sie, dass es mögliche Werte für secs gibt, die außerhalb des gültigen Bereichs von QDateTime liegen, sowohl negativ als auch positiv. Das Verhalten dieser Funktion ist für diese Werte undefiniert.
Siehe auch fromMSecsSinceEpoch(), toSecsSinceEpoch(), und setSecsSinceEpoch().
[static]
QDateTime QDateTime::fromSecsSinceEpoch(qint64 secs)
Dies ist eine überladene Funktion.
[static, until 6.9]
QDateTime QDateTime::fromSecsSinceEpoch(qint64 secs, Qt::TimeSpec spec, int offsetSeconds = 0)
Diese Funktion soll in Version 6.9 veraltet sein.
Dies ist eine überladene Funktion.
Übergeben Sie stattdessen QTimeZone, oder lassen Sie spec und offsetSeconds weg.
Gibt einen Zeitpunkt zurück, der die angegebene Anzahl secs von Sekunden nach dem Beginn des Jahres 1970 in UTC darstellt, wie durch spec und offsetSeconds beschrieben.
Beachten Sie, dass es mögliche Werte für secs gibt, die außerhalb des gültigen Bereichs von QDateTime liegen, sowohl negativ als auch positiv. Das Verhalten dieser Funktion ist für diese Werte undefiniert.
Wenn spec nicht Qt::OffsetFromUTC ist, wird offsetSeconds ignoriert. Wenn spec gleich Qt::OffsetFromUTC und offsetSeconds gleich 0 ist, wird Qt::UTC als spec verwendet, da UTC einen Null-Offset hat.
Wenn spec Qt::TimeZone ist, wird Qt::LocalTime an seiner Stelle verwendet, was der Verwendung der aktuellen Systemzeitzone entspricht (aber anders dargestellt wird).
Siehe auch fromMSecsSinceEpoch(), toSecsSinceEpoch(), und setSecsSinceEpoch().
[static, since 6.4]
QDateTime QDateTime::fromStdLocalTime(const std::chrono::local_time<std::chrono::milliseconds> &time)
Konstruiert eine datetime, deren Datum und Uhrzeit die durch time dargestellte Anzahl von Millisekunden sind, gezählt seit 1970-01-01T00:00:00.000 in lokaler Zeit (Qt::LocalTime).
Hinweis: Für diese Funktion ist C++20 erforderlich.
Diese Funktion wurde in Qt 6.4 eingeführt.
Siehe auch toStdSysMilliseconds() und fromMSecsSinceEpoch().
[static, since 6.4]
QDateTime QDateTime::fromStdTimePoint(const std::chrono::local_time<std::chrono::milliseconds> &time)
Konstruiert eine datetime, deren Datum und Uhrzeit die durch time dargestellte Anzahl von Millisekunden sind, gezählt seit 1970-01-01T00:00:00.000 in lokaler Zeit (Qt::LocalTime).
Hinweis: Für diese Funktion ist C++20 erforderlich.
Diese Funktion wurde in Qt 6.4 eingeführt.
Siehe auch toStdSysMilliseconds() und fromMSecsSinceEpoch().
[static, since 6.4]
template <typename Clock, typename Duration> QDateTime QDateTime::fromStdTimePoint(const std::chrono::time_point<Clock, Duration> &time)
Konstruiert eine Datetime, die denselben Zeitpunkt wie time darstellt, wobei Qt::UTC als Zeitdarstellung verwendet wird.
Die Uhr von time muss mit std::chrono::system_clock
kompatibel sein; insbesondere muss eine von std::chrono::clock_cast
unterstützte Konvertierung existieren. Nach der Konvertierung muss der Dauertyp des Ergebnisses in std::chrono::milliseconds
konvertierbar sein.
Ist dies nicht der Fall, muss der Aufrufer die notwendige Taktkonvertierung zu std::chrono::system_clock
und die notwendige Konvertierung des Dauertyps (Cast/Round/Floor/Eceil/...) durchführen, so dass die Eingabe dieser Funktion die obigen Bedingungen erfüllt.
Hinweis: Diese Funktion erfordert C++20.
Diese Funktion wurde in Qt 6.4 eingeführt.
Siehe auch toStdSysMilliseconds() und fromMSecsSinceEpoch().
[static, since 6.4]
QDateTime QDateTime::fromStdTimePoint(std::chrono::time_point<std::chrono::system_clock, std::chrono::milliseconds> time)
Dies ist eine überladene Funktion.
Konstruiert eine datetime, die denselben Zeitpunkt wie time repräsentiert, wobei Qt::UTC als Zeitdarstellung verwendet wird.
Diese Funktion wurde in Qt 6.4 eingeführt.
[static, since 6.4]
QDateTime QDateTime::fromStdZonedTime(const int &time)
Konstruiert eine Datetime, die denselben Zeitpunkt wie time darstellt. Das Ergebnis wird in der Zeitzone von time ausgedrückt.
Hinweis: Diese Funktion erfordert C++20.
Diese Funktion wurde in Qt 6.4 eingeführt.
Siehe auch QTimeZone, toStdSysMilliseconds(), und fromMSecsSinceEpoch().
[static]
QDateTime QDateTime::fromString(const QString &string, Qt::DateFormat format = Qt::TextDate)
Gibt die QDateTime zurück, die durch string repräsentiert wird, unter Verwendung der angegebenen format, oder eine ungültige Datumsangabe, wenn dies nicht möglich ist.
Hinweis für Qt::TextDate: Es werden nur englische kurze Monatsnamen (z. B. "Jan" in Kurzform oder "January" in Langform) erkannt.
Siehe auch toString() und QLocale::toDateTime().
[static]
QDateTime QDateTime::fromString(const QString &string, const QString &format, int baseYear, QCalendar cal)
Gibt die QDateTime zurück, die durch string repräsentiert wird, unter Verwendung der angegebenen format, oder eine ungültige Datetime, wenn die Zeichenkette nicht geparst werden kann.
Verwendet den Kalender cal, falls angegeben, sonst Gregorianisch.
Wenn format nur die letzten beiden Ziffern eines Jahres angibt, werden die 100 Jahre ab baseYear als erste Kandidaten berücksichtigt. Vor 6.7 gab es keinen Parameter baseYear und es wurde immer 1900 verwendet. Dies ist die Standardeinstellung für baseYear, wobei ein Jahr von damals bis 1999 ausgewählt wird. In einigen Fällen können andere Felder dazu führen, dass das nächste oder vorherige Jahrhundert ausgewählt wird, um ein Ergebnis zu erhalten, das mit allen angegebenen Feldern konsistent ist. Siehe QDate::fromString() für Details.
Zusätzlich zu den Ausdrücken, die in der Formatzeichenkette zur Darstellung von Teilen des Datums und der Uhrzeit von QDate::fromString() und QTime::fromString() erkannt werden, unterstützt diese Methode:
Ausdruck | Ausgabe |
---|---|
t | die Zeitzone (Offset, Name, "Z" oder Offset mit "UTC"-Präfix) |
tt | die Zeitzone im Offset-Format ohne Doppelpunkt zwischen Stunden und Minuten (zum Beispiel "+0200") |
ttt | die Zeitzone im Offset-Format mit einem Doppelpunkt zwischen Stunden und Minuten (z. B. "+02:00") |
tttt | der Name der Zeitzone (zum Beispiel "Europa/Berlin"). Es werden die Namen erkannt, die QTimeZone bekannt sind, was vom verwendeten Betriebssystem abhängen kann. |
Wenn der Formatierer "t" nicht vorhanden ist, wird die lokale Zeitzone des Systems verwendet. Für die Standardwerte aller anderen Felder siehe QDate::fromString() und QTime::fromString().
Ein Beispiel:
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.
Alle anderen Eingabezeichen werden als Text behandelt. Jede nicht leere Folge von Zeichen, die in einfache Anführungszeichen eingeschlossen sind, wird ebenfalls (ohne die Anführungszeichen) als Text behandelt und nicht als Ausdruck interpretiert.
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
Wenn das Format nicht erfüllt ist, wird ein ungültiger QDateTime zurückgegeben. Wenn das Format erfüllt ist, aber string einen ungültigen Zeitpunkt darstellt (z. B. in einer Lücke, die durch einen Zeitzonenwechsel übersprungen wurde), wird ein gültiger QDateTime zurückgegeben, der einen nahegelegenen, gültigen Zeitpunkt darstellt.
Die Ausdrücke, die keine führenden Nullen haben (d, M, h, m, s, z), sind gierig. Das bedeutet, dass sie zwei Ziffern (oder drei für z) verwenden, auch wenn sie dadurch außerhalb des Bereichs liegen und/oder zu wenige Ziffern für andere Abschnitte übrig bleiben.
Dies hätte 1. Januar 00:30.00 bedeuten können, aber das M nimmt zwei Ziffern.
Falsch angegebene Felder der string führen dazu, dass eine ungültige QDateTime zurückgegeben wird. Es werden nur Datumsangaben zwischen der Ortszeit Anfang des Jahres 100 und Ende des Jahres 9999 unterstützt. Beachten Sie, dass Datumsangaben in der Nähe der Enden dieses Bereichs in anderen Zeitzonen, insbesondere einschließlich UTC, je nach lokaler Zeitzone außerhalb des Bereichs liegen können (und daher als ungültig behandelt werden).
Hinweis: Tages- und Monatsnamen sowie AM/PM-Indikatoren müssen in Englisch angegeben werden (Gebietsschema C). Wenn lokalisierte Monats- und Tagesnamen oder lokalisierte Formen von AM/PM erkannt werden sollen, verwenden Sie QLocale::system().toDateTime().
Hinweis: Wenn ein Formatzeichen öfter wiederholt wird als der längste Ausdruck in der obigen Tabelle, wird dieser Teil des Formats als mehrere Ausdrücke ohne Trennzeichen dazwischen gelesen; der längste oben, möglicherweise so oft wiederholt, wie es Kopien davon gibt, endet mit einem Rest, der ein kürzerer Ausdruck sein kann. So würde 'tttttt'
mit "Europe/BerlinEurope/Berlin"
übereinstimmen und die Zone auf Berliner Zeit setzen; enthielte die Datetime-Zeichenkette "Europe/BerlinZ", würde sie "übereinstimmen", aber ein inkonsistentes Ergebnis liefern, was zu einer ungültigen Datetime führen würde.
Siehe auch toString(), QDate::fromString(), QTime::fromString(), und QLocale::toDateTime().
[static, since 6.0]
QDateTime QDateTime::fromString(QStringView string, Qt::DateFormat format = Qt::TextDate)
Dies ist eine überladene Funktion.
Diese Funktion wurde in Qt 6.0 eingeführt.
[static, since 6.0]
QDateTime QDateTime::fromString(QStringView string, QStringView format, QCalendar cal)
Dies ist eine überladene Funktion.
Diese Funktion wurde in Qt 6.0 eingeführt.
[static, since 6.7]
QDateTime QDateTime::fromString(QStringView string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear)
Dies ist eine überladene Funktion.
Verwendet eine standardmäßig konstruierte QCalendar.
Diese Funktion wurde in Qt 6.7 eingeführt.
[static, since 6.0]
QDateTime QDateTime::fromString(const QString &string, QStringView format, QCalendar cal)
Dies ist eine überladene Funktion.
Diese Funktion wurde in Qt 6.0 eingeführt.
[static, since 6.7]
QDateTime QDateTime::fromString(const QString &string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear)
Dies ist eine überladene Funktion.
Verwendet eine standardmäßig konstruierte QCalendar.
Diese Funktion wurde in Qt 6.7 eingeführt.
[static]
QDateTime QDateTime::fromString(const QString &string, const QString &format, QCalendar cal)
Dies ist eine überladene Funktion.
[static, since 6.7]
QDateTime QDateTime::fromString(const QString &string, const QString &format, int baseYear = QLocale::DefaultTwoDigitBaseYear)
Dies ist eine überladene Funktion.
Verwendet eine standardmäßig konstruierte QCalendar.
Diese Funktion wurde in Qt 6.7 eingeführt.
[static, since 6.7]
QDateTime QDateTime::fromString(QStringView string, QStringView format, int baseYear, QCalendar cal)
Dies ist eine überladene Funktion.
Diese Funktion wurde in Qt 6.7 eingeführt.
[static, since 6.0]
QDateTime QDateTime::fromString(const QString &string, QStringView format, int baseYear, QCalendar cal)
Dies ist eine überladene Funktion.
Diese Funktion wurde in Qt 6.0 eingeführt.
bool QDateTime::isDaylightTime() const
Gibt zurück, ob dieser Zeitpunkt in die Sommerzeit fällt.
Wenn Qt::TimeSpec nicht Qt::LocalTime oder Qt::TimeZone ist, wird immer false zurückgegeben.
Siehe auch timeSpec().
bool QDateTime::isNull() const
Gibt true
zurück, wenn sowohl das Datum als auch die Uhrzeit null sind; andernfalls wird false
zurückgegeben. Ein null datetime ist ungültig.
Siehe auch QDate::isNull(), QTime::isNull(), und isValid().
bool QDateTime::isValid() const
Gibt true
zurück, wenn diese Datetime einen bestimmten Zeitpunkt darstellt, andernfalls false
.
Eine Datetime ist gültig, wenn sowohl das Datum als auch die Uhrzeit gültig sind und die verwendete Zeitdarstellung ihrer Kombination eine gültige Bedeutung verleiht. Wenn es sich bei der Zeitdarstellung um eine bestimmte Zeitzone oder Ortszeit handelt, kann es an manchen Daten Zeiten geben, die die Zone in ihrer Darstellung überspringt, z. B. wenn eine Sommerzeitumstellung eine Stunde überspringt (typischerweise während einer Nacht im Frühling). Wenn beispielsweise die Sommerzeit um 2 Uhr morgens endet und die Uhr auf 3 Uhr vorrückt, sind Datumsangaben von 02:00:00 bis 02:59:59.999 an diesem Tag ungültig.
Siehe auch QDateTime::YearRange, QDate::isValid(), und QTime::isValid().
qint64 QDateTime::msecsTo(const QDateTime &other) const
Gibt die Anzahl der Millisekunden zwischen diesem Zeitpunkt und dem Zeitpunkt other zurück. Wenn der Zeitpunkt other vor diesem Zeitpunkt liegt, ist der zurückgegebene Wert negativ.
Vor dem Vergleich werden die beiden Datumszeiten in Qt::UTC konvertiert, um sicherzustellen, dass das Ergebnis korrekt ist, wenn für eine der beiden Datumszeiten die Sommerzeit gilt, für die andere jedoch nicht.
Gibt 0 zurück, wenn eine der beiden Datumszeiten ungültig ist.
Siehe auch addMSecs(), daysTo(), und QTime::msecsTo().
int QDateTime::offsetFromUtc() const
Gibt den Offset dieser Datetime von UTC in Sekunden zurück.
Das Ergebnis hängt von timeSpec() ab:
Qt::UTC
Der Versatz ist 0.Qt::OffsetFromUTC
Der Offset ist der ursprünglich eingestellte Wert.Qt::LocalTime
Der Offset der lokalen Zeit von UTC wird zurückgegeben.Qt::TimeZone
Es wird der von der Zeitzone verwendete Offset zurückgegeben.
Bei den letzten beiden wird der Offset zu diesem Datum und dieser Uhrzeit zurückgegeben, wobei die Sommerzeitverschiebung berücksichtigt wird. Der Offset ist die Differenz zwischen der Ortszeit oder der Zeit in der angegebenen Zeitzone und der UTC-Zeit; er ist positiv für Zeitzonen vor UTC (östlich des Nullmeridians), negativ für solche hinter UTC (westlich des Nullmeridians).
Siehe auch setOffsetFromUtc().
qint64 QDateTime::secsTo(const QDateTime &other) const
Gibt die Anzahl der Sekunden zwischen diesem Zeitpunkt und dem Zeitpunkt other zurück. Wenn der Zeitpunkt other vor diesem Zeitpunkt liegt, ist der zurückgegebene Wert negativ.
Vor dem Vergleich werden die beiden Datumszeiten in Qt::UTC umgewandelt, um sicherzustellen, dass das Ergebnis korrekt ist, wenn für eine der beiden Datumszeiten die Sommerzeit gilt, für die andere jedoch nicht.
Gibt 0 zurück, wenn eine der beiden Datumszeiten ungültig ist.
Beispiel:
QDateTime now = QDateTime::currentDateTime();QDateTime xmas(QDate(now.date().year(), 12, 25).startOfDay());qDebug("There are %d seconds to Christmas", now.secsTo(xmas));
Siehe auch addSecs(), daysTo(), und QTime::secsTo().
void QDateTime::setDate(QDate date, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)
Setzt den Datumsteil dieser Datetime auf date.
Wenn noch keine Zeit eingestellt ist, wird sie auf Mitternacht gesetzt. Wenn date ungültig ist, wird QDateTime ungültig.
Wenn date und time() einen Zeitpunkt beschreiben, der nahe an einem Übergang für die Zeitdarstellung dieser Datetime liegt, steuert resolve, wie diese Situation aufgelöst wird.
Hinweis: Vor Qt 6.7 fehlte in der Version dieser Funktion der Parameter resolve, so dass es keine Möglichkeit gab, die Mehrdeutigkeiten im Zusammenhang mit Übergängen aufzulösen.
Siehe auch date(), setTime(), und setTimeZone().
void QDateTime::setMSecsSinceEpoch(qint64 msecs)
Setzt den Zeitpunkt so, dass er eine bestimmte Anzahl von Millisekunden ( msecs) nach dem Beginn des Jahres 1970 in UTC liegt.
Auf Systemen, die keine Zeitzonen unterstützen, verhält sich diese Funktion so, als ob die Ortszeit Qt::UTC wäre.
Beachten Sie, dass die Übergabe des Minimums von qint64
(std::numeric_limits<qint64>::min()
) an msecs zu einem undefinierten Verhalten führt.
Siehe auch setSecsSinceEpoch(), toMSecsSinceEpoch(), und fromMSecsSinceEpoch().
[until 6.9]
void QDateTime::setOffsetFromUtc(int offsetSeconds)
Diese Funktion soll in Version 6.9 abgeschafft werden.
Verwenden Sie stattdessen setTimeZone(QTimeZone::fromSecondsAheadOfUtc(offsetSeconds))
Setzt den timeSpec() auf Qt::OffsetFromUTC und den Offset auf offsetSeconds. Die Datetime kann sich auf einen anderen Zeitpunkt beziehen.
Der maximale und minimale Versatz beträgt 14 positive oder negative Stunden. Wenn offsetSeconds größer oder kleiner als dieser Wert ist, ist das Ergebnis undefiniert.
Wenn offsetSeconds 0 ist, wird timeSpec() auf Qt::UTC gesetzt.
Siehe auch setTimeZone(), isValid(), offsetFromUtc(), und toOffsetFromUtc().
void QDateTime::setSecsSinceEpoch(qint64 secs)
Stellt die Datetime so ein, dass sie eine bestimmte Anzahl von Sekunden ( secs) nach dem Beginn des Jahres 1970 in UTC darstellt.
Auf Systemen, die keine Zeitzonen unterstützen, verhält sich diese Funktion so, als ob die lokale Zeit Qt::UTC wäre.
Siehe auch setMSecsSinceEpoch(), toSecsSinceEpoch(), und fromSecsSinceEpoch().
void QDateTime::setTime(QTime time, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)
Setzt den Zeitteil dieser Datumsangabe auf time. Wenn time nicht gültig ist, setzt diese Funktion sie auf Mitternacht. Daher ist es möglich, jede eingestellte Zeit in QDateTime zu löschen, indem sie auf einen Standardwert QTime gesetzt wird:
Wenn date() und time einen Zeitpunkt beschreiben, der nahe an einem Übergang für die Zeitdarstellung dieser Datetime liegt, steuert resolve, wie diese Situation aufgelöst wird.
Hinweis: Vor Qt 6.7 fehlte in der Version dieser Funktion der Parameter resolve, so dass es keine Möglichkeit gab, die Mehrdeutigkeiten in Bezug auf Übergänge aufzulösen.
Siehe auch time(), setDate(), und setTimeZone().
[until 6.9]
void QDateTime::setTimeSpec(Qt::TimeSpec spec)
Diese Funktion soll in Version 6.9 abgeschafft werden.
Verwenden Sie stattdessen setTimeZone()
Setzt die in dieser datetime verwendete Zeitangabe auf spec. Die datetime kann sich auf einen anderen Zeitpunkt beziehen.
Wenn spec Qt::OffsetFromUTC ist, wird timeSpec() auf Qt::UTC gesetzt, d. h. ein effektiver Versatz von 0.
Wenn spec gleich Qt::TimeZone ist, wird die Angabe auf Qt::LocalTime gesetzt, d. h. auf die aktuelle Systemzeitzone.
Beispiel:
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.";
Siehe auch setTimeZone(), timeSpec(), toTimeSpec(), setDate(), und setTime().
void QDateTime::setTimeZone(const QTimeZone &toZone, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)
Setzt die in dieser Datetime verwendete Zeitzone auf toZone.
Die Datetime kann sich auf einen anderen Zeitpunkt beziehen. Sie verwendet die Zeitdarstellung von toZone, wodurch sich die Bedeutung der unveränderten date() und time() ändern kann.
Wenn toZone ungültig ist, ist auch die Datetime ungültig. Andernfalls entspricht timeSpec() dieser Datumsangabe nach dem Aufruf toZone.timeSpec()
.
Wenn date() und time() einen Zeitpunkt beschreiben, der nahe an einem Übergang für toZone liegt, steuert resolve, wie diese Situation aufgelöst wird.
Hinweis: Vor Qt 6.7 fehlte in der Version dieser Funktion der Parameter resolve, so dass es keine Möglichkeit gab, die Mehrdeutigkeiten in Bezug auf Übergänge aufzulösen.
Siehe auch timeRepresentation(), timeZone(), und Qt::TimeSpec.
[noexcept]
void QDateTime::swap(QDateTime &other)
Tauscht diesen Zeitpunkt mit other aus. Dieser Vorgang ist sehr schnell und schlägt nie fehl.
QTime QDateTime::time() const
Gibt den Zeitteil der Datetime zurück.
Siehe auch setTime(), date(), und timeRepresentation().
[since 6.5]
QTimeZone QDateTime::timeRepresentation() const
Gibt eine QTimeZone zurück, die angibt, wie diese Datetime die Zeit darstellt.
Die timeSpec() der zurückgegebenen QTimeZone stimmt mit der dieser Datetime überein; wenn sie nicht Qt::TimeZone ist, ist die zurückgegebene QTimeZone eine Zeitdarstellung. Wenn timeSpec() Qt::OffsetFromUTC ist, liefert das zurückgegebene QTimeZone's fixedSecondsAheadOfUtc() den Offset. Wenn timeSpec() Qt::TimeZone ist, ist das QTimeZone Objekt selbst die vollständige Darstellung dieser Zeitzone.
Diese Funktion wurde in Qt 6.5 eingeführt.
Siehe auch timeZone(), setTimeZone(), und QTimeZone::asBackendZone().
Qt::TimeSpec QDateTime::timeSpec() const
Gibt die Zeitangabe der datetime zurück.
Diese klassifiziert ihre Zeitdarstellung als Ortszeit, UTC, einen festen Offset von UTC (ohne Angabe des Offsets) oder eine Zeitzone (ohne Angabe der Details dieser Zeitzone). Äquivalent zu timeRepresentation().timeSpec()
.
Siehe auch setTimeSpec(), timeRepresentation(), date(), und time().
QTimeZone QDateTime::timeZone() const
Gibt die Zeitzone der Datetime zurück.
Das Ergebnis ist dasselbe wie timeRepresentation().asBackendZone()
. In allen Fällen ist timeSpec() des Ergebnisses Qt::TimeZone.
Wenn timeSpec() Qt::LocalTime ist, beschreibt das Ergebnis die Ortszeit zum Zeitpunkt des Aufrufs dieser Methode. Es wird spätere Änderungen der Systemzeitzone nicht widerspiegeln, auch wenn die QDateTime, von der es bezogen wurde, dies tut.
Siehe auch timeRepresentation(), setTimeZone(), Qt::TimeSpec, und QTimeZone::asBackendZone().
QString QDateTime::timeZoneAbbreviation() const
Gibt die Zeitzonenabkürzung für diesen Zeitpunkt zurück.
Die zurückgegebene Zeichenkette hängt von timeSpec() ab:
- Für Qt::UTC ist es "UTC".
- Für Qt::OffsetFromUTC wird sie im Format "UTC±00:00" zurückgegeben.
- Für Qt::LocalTime wird das Hostsystem abgefragt.
- Für Qt::TimeZone wird das zugehörige Objekt QTimeZone abgefragt.
Hinweis: Es ist nicht garantiert, dass die Abkürzung eindeutig ist, d. h. verschiedene Zeitzonen können die gleiche Abkürzung haben. Bei Qt::LocalTime und Qt::TimeZone kann die Abkürzung, wenn sie vom Hostsystem zurückgegeben wird, lokalisiert sein.
Siehe auch timeSpec() und QTimeZone::abbreviation().
CFDateRef QDateTime::toCFDate() const
Erzeugt ein CFDate aus einem QDateTime.
Der Aufrufer ist Eigentümer des CFDate-Objekts und verantwortlich für dessen Freigabe.
Siehe auch fromCFDate().
QDateTime QDateTime::toLocalTime() const
Gibt eine in die Ortszeit umgewandelte Kopie dieser Datumszeit zurück.
Das Ergebnis stellt denselben Zeitpunkt dar wie diese Datumsangabe und ist gleich dieser.
Beispiel:
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);
Siehe auch toTimeZone(), toUTC(), und toOffsetFromUtc().
qint64 QDateTime::toMSecsSinceEpoch() const
Gibt die Datumszeit als Anzahl von Millisekunden nach dem Beginn des Jahres 1970 in UTC zurück.
Auf Systemen, die keine Zeitzonen unterstützen, verhält sich diese Funktion so, als ob die lokale Zeit Qt::UTC wäre.
Das Verhalten dieser Funktion ist undefiniert, wenn die in diesem Objekt gespeicherte Datumszeit ungültig ist. Für alle gültigen Datumsangaben gibt diese Funktion jedoch einen eindeutigen Wert zurück.
Siehe auch toSecsSinceEpoch(), setMSecsSinceEpoch(), und fromMSecsSinceEpoch().
NSDate *QDateTime::toNSDate() const
Erzeugt ein NSDate aus einem QDateTime.
Das NSDate-Objekt wird automatisch wieder freigegeben.
Siehe auch fromNSDate().
QDateTime QDateTime::toOffsetFromUtc(int offsetSeconds) const
Gibt eine Kopie dieses Datums zurück, die in eine Spezifikation von Qt::OffsetFromUTC mit dem angegebenen offsetSeconds konvertiert wurde. Äquivalent zu toTimeZone(QTimeZone::fromSecondsAheadOfUtc(offsetSeconds))
.
Wenn offsetSeconds gleich 0 ist, wird eine UTC-Datetime zurückgegeben.
Das Ergebnis stellt denselben Zeitpunkt wie diese Datetime dar und ist gleich.
Siehe auch setOffsetFromUtc(), offsetFromUtc(), und toTimeZone().
qint64 QDateTime::toSecsSinceEpoch() const
Gibt die Datumszeit als Anzahl von Sekunden nach dem Beginn des Jahres 1970 in UTC zurück.
Auf Systemen, die keine Zeitzonen unterstützen, verhält sich diese Funktion so, als ob die lokale Zeit Qt::UTC wäre.
Das Verhalten dieser Funktion ist undefiniert, wenn die in diesem Objekt gespeicherte Datumsangabe ungültig ist. Für alle gültigen Datumsangaben gibt diese Funktion jedoch einen eindeutigen Wert zurück.
Siehe auch toMSecsSinceEpoch(), fromSecsSinceEpoch(), und setSecsSinceEpoch().
[since 6.4]
std::chrono::sys_time<std::chrono::milliseconds> QDateTime::toStdSysMilliseconds() const
Konvertiert dieses datetime-Objekt in den entsprechenden Zeitpunkt, ausgedrückt in Millisekunden, unter Verwendung von std::chrono::system_clock
als Uhr.
Hinweis: Diese Funktion erfordert C++20.
Diese Funktion wurde in Qt 6.4 eingeführt.
Siehe auch fromStdTimePoint() und toMSecsSinceEpoch().
[since 6.4]
std::chrono::sys_seconds QDateTime::toStdSysSeconds() const
Konvertiert dieses datetime-Objekt in den entsprechenden Zeitpunkt, ausgedrückt in Sekunden, unter Verwendung von std::chrono::system_clock
als Uhr.
Hinweis: Diese Funktion erfordert C++20.
Diese Funktion wurde in Qt 6.4 eingeführt.
Siehe auch fromStdTimePoint() und toSecsSinceEpoch().
QString QDateTime::toString(QStringView format) const
Dies ist eine überladene Funktion.
QString QDateTime::toString(Qt::DateFormat format = Qt::TextDate) const
Dies ist eine überladene Funktion.
Gibt die Datetime als String in der angegebenen format zurück.
Wenn format Qt::TextDate ist, wird die Zeichenkette in der Standardform formatiert. Die Tages- und Monatsnamen sind in Englisch. Ein Beispiel für diese Formatierung ist "Wed May 20 03:40:13 1998". Für eine lokalisierte Formatierung siehe QLocale::toString().
Wenn format Qt::ISODate ist, entspricht das Format der Zeichenkette der erweiterten Spezifikation von ISO 8601 für Datums- und Zeitangaben in der Form yyyy-MM-ddTHH:mm:ss[Z|±HH:mm], abhängig von timeSpec() von QDateTime. Wenn timeSpec() Qt::UTC ist, wird Z an die Zeichenkette angehängt; wenn timeSpec() Qt::OffsetFromUTC ist, wird die Abweichung in Stunden und Minuten von UTC an die Zeichenkette angehängt. Um Millisekunden in das ISO 8601-Datum aufzunehmen, verwenden Sie format Qt::ISODateWithMs , was yyyy-MM-ddTHH:mm:ss.zzz[Z|±HH:mm] entspricht.
Wenn format Qt::RFC2822Date ist, wird die Zeichenfolge gemäß RFC 2822 formatiert.
Wenn die Datumsangabe ungültig ist, wird eine leere Zeichenkette zurückgegeben.
Warnung: Das Format Qt::ISODate ist nur für Jahre im Bereich von 0 bis 9999 gültig.
Siehe auch fromString(), QDate::toString(), QTime::toString(), und QLocale::toString().
QString QDateTime::toString(const QString &format) const
Dies ist eine überladene Funktion.
[until 6.9]
QDateTime QDateTime::toTimeSpec(Qt::TimeSpec spec) const
Diese Funktion soll in Version 6.9 abgeschafft werden.
Verwenden Sie stattdessen toTimeZone().
Gibt eine Kopie dieser Datetime zurück, konvertiert in die angegebene Zeit spec.
Das Ergebnis stellt denselben Zeitpunkt dar wie diese Datetime und ist gleich dieser Zeit.
Wenn spec gleich Qt::OffsetFromUTC ist, wird es auf Qt::UTC gesetzt. Um eine feste Abweichung von UTC zu erhalten, verwenden Sie toTimeZone() oder toOffsetFromUtc().
Wenn spec gleich Qt::TimeZone ist, wird er auf Qt::LocalTime gesetzt, d. h. auf die lokale Zeitzone. Um eine bestimmte Zeitzone einzustellen, verwenden Sie toTimeZone().
Beispiel:
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);
Siehe auch setTimeSpec(), timeSpec(), und toTimeZone().
QDateTime QDateTime::toTimeZone(const QTimeZone &timeZone) const
Gibt eine Kopie dieser Datetime zurück, die in die angegebene timeZone konvertiert wurde.
Das Ergebnis stellt denselben Zeitpunkt wie diese Datetime dar und entspricht ihr.
Das Ergebnis beschreibt den Zeitpunkt in Form der Zeitdarstellung von timeZone. Zum Beispiel:
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);
Wenn timeZone ungültig ist, ist auch die Datumsangabe ungültig. Andernfalls stimmt die zurückgegebene Datumsangabe timeSpec() mit timeZone.timeSpec()
überein.
Siehe auch timeRepresentation(), toLocalTime(), toUTC(), und toOffsetFromUtc().
QDateTime QDateTime::toUTC() const
Gibt eine in UTC konvertierte Kopie dieser Datumszeit zurück.
Das Ergebnis stellt denselben Zeitpunkt wie diese Datetime dar und entspricht ihr.
Beispiel:
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);
Siehe auch toTimeZone(), toLocalTime(), und toOffsetFromUtc().
[since 6.4]
QDateTime &QDateTime::operator+=(std::chrono::milliseconds duration)
Ändert dieses Datetime-Objekt durch Hinzufügen der angegebenen duration. Das aktualisierte Objekt wird später sein, wenn duration positiv ist, oder früher, wenn es negativ ist.
Wenn diese Datetime ungültig ist, hat diese Funktion keine Wirkung.
Gibt eine Referenz auf dieses datetime-Objekt zurück.
Diese Funktion wurde in Qt 6.4 eingeführt.
Siehe auch addMSecs().
[since 6.4]
QDateTime &QDateTime::operator-=(std::chrono::milliseconds duration)
Ändert dieses Datetime-Objekt durch Subtraktion des angegebenen duration. Das aktualisierte Objekt wird früher liegen, wenn duration positiv ist, oder später, wenn es negativ ist.
Wenn diese datetime ungültig ist, hat diese Funktion keine Wirkung.
Gibt eine Referenz auf dieses datetime-Objekt zurück.
Diese Funktion wurde in Qt 6.4 eingeführt.
Siehe auch addMSecs.
[noexcept]
QDateTime &QDateTime::operator=(const QDateTime &other)
Kopiert die other datetime in this und gibt diese Kopie zurück.
Verwandte Nicht-Mitglieder
[since 6.4]
QDateTime operator+(const QDateTime &dateTime, std::chrono::milliseconds duration)
[since 6.4]
QDateTime operator+(std::chrono::milliseconds duration, const QDateTime &dateTime)
Gibt ein QDateTime Objekt zurück, das einen Zeitpunkt duration Millisekunden später als dateTime (oder früher, wenn duration negativ ist) enthält.
Wenn dateTime ungültig ist, wird eine ungültige Datumszeit zurückgegeben.
Diese Funktion wurde in Qt 6.4 eingeführt.
Siehe auch addMSecs().
[noexcept]
bool operator!=(const QDateTime &lhs, const QDateTime &rhs)
Gibt true
zurück, wenn lhs sich von rhs unterscheidet; andernfalls wird false
zurückgegeben.
Zwei Datumsangaben, die unterschiedliche Zeitdarstellungen verwenden, können unterschiedliche Abstände zu UTC haben. In diesem Fall können sie gleichwertig verglichen werden, auch wenn ihre date() und time() unterschiedlich sind, wenn dieser Unterschied dem Unterschied im UTC-Offset entspricht. Wenn ihre date()
und time()
übereinstimmen, ist diejenige mit dem größeren Abstand zu UTC kleiner (früher) als diejenige mit dem kleineren Abstand. Infolgedessen sind die Datumszeiten nur schwach geordnet.
Seit 5.14 sind alle ungültigen Datumsangaben gleichwertig und kleiner als alle gültigen Datumsangaben.
Siehe auch operator==().
[since 6.4]
std::chrono::milliseconds operator-(const QDateTime &lhs, const QDateTime &rhs)
Gibt die Anzahl der Millisekunden zwischen lhs und rhs zurück. Wenn lhs vor rhs liegt, ist das Ergebnis negativ.
Gibt 0 zurück, wenn einer der beiden Zeitpunkte ungültig ist.
Diese Funktion wurde in Qt 6.4 eingeführt.
Siehe auch msecsTo().
[since 6.4]
QDateTime operator-(const QDateTime &dateTime, std::chrono::milliseconds duration)
Gibt ein Objekt QDateTime zurück, das einen Zeitpunkt duration enthält, der um Millisekunden vor dateTime liegt (oder später, wenn duration negativ ist).
Wenn dateTime ungültig ist, wird eine ungültige Datumszeit zurückgegeben.
Diese Funktion wurde in Qt 6.4 eingeführt.
Siehe auch addMSecs().
[noexcept]
bool operator<(const QDateTime &lhs, const QDateTime &rhs)
Gibt true
zurück, wenn lhs vor rhs liegt; andernfalls wird false
zurückgegeben.
Zwei Datumsangaben, die unterschiedliche Zeitdarstellungen verwenden, können unterschiedliche Abstände zur UTC haben. In diesem Fall können sie gleichwertig verglichen werden, auch wenn ihre date() und time() unterschiedlich sind, wenn dieser Unterschied dem Unterschied im UTC-Offset entspricht. Wenn ihre date()
und time()
übereinstimmen, ist diejenige mit dem größeren Abstand zu UTC kleiner (früher) als diejenige mit dem kleineren Abstand. Infolgedessen sind die Datumsangaben nur schwach geordnet.
Seit 5.14 sind alle ungültigen Datumsangaben gleichwertig und kleiner als alle gültigen Datumsangaben.
Siehe auch operator==().
QDataStream &operator<<(QDataStream &out, const QDateTime &dateTime)
Schreibt dateTime in den out Stream.
Siehe auch Serialisierung von Qt-Datentypen.
[noexcept]
bool operator<=(const QDateTime &lhs, const QDateTime &rhs)
Gibt true
zurück, wenn lhs vor oder gleich rhs ist; andernfalls wird false
zurückgegeben.
Zwei Datumsangaben, die unterschiedliche Zeitdarstellungen verwenden, können unterschiedliche Abstände zu UTC haben. In diesem Fall können sie gleichwertig verglichen werden, auch wenn ihre date() und time() unterschiedlich sind, wenn dieser Unterschied dem Unterschied im UTC-Offset entspricht. Wenn ihre date()
und time()
übereinstimmen, ist diejenige mit dem größeren Abstand zu UTC kleiner (früher) als diejenige mit dem kleineren Abstand. Infolgedessen sind die Datumsangaben nur schwach geordnet.
Seit 5.14 sind alle ungültigen Datumsangaben gleichwertig und kleiner als alle gültigen Datumsangaben.
Siehe auch operator==().
[noexcept]
bool operator==(const QDateTime &lhs, const QDateTime &rhs)
Gibt true
zurück, wenn lhs denselben Zeitpunkt wie rhs darstellt; andernfalls wird false
zurückgegeben.
Zwei Zeitpunkte, die unterschiedliche Zeitdarstellungen verwenden, können unterschiedliche Abstände zu UTC haben. In diesem Fall können sie gleichwertig verglichen werden, auch wenn ihre date() und time() unterschiedlich sind, wenn dieser Unterschied dem Unterschied im UTC-Offset entspricht. Wenn ihre date()
und time()
übereinstimmen, ist diejenige mit dem größeren Abstand zu UTC kleiner (früher) als diejenige mit dem kleineren Abstand. Infolgedessen sind die Datumsangaben nur schwach geordnet.
Seit 5.14 sind alle ungültigen Datumsangaben gleichwertig und kleiner als alle gültigen Datumsangaben.
Siehe auch operator!=(), operator<(), operator<=(), operator>(), und operator>=().
[noexcept]
bool operator>(const QDateTime &lhs, const QDateTime &rhs)
Gibt true
zurück, wenn lhs später als rhs ist; andernfalls wird false
zurückgegeben.
Zwei Datumsangaben, die unterschiedliche Zeitdarstellungen verwenden, können unterschiedliche Abstände zu UTC haben. In diesem Fall können sie gleichwertig verglichen werden, auch wenn ihre date() und time() unterschiedlich sind, wenn dieser Unterschied dem Unterschied im UTC-Offset entspricht. Wenn ihre date()
und time()
übereinstimmen, ist diejenige mit dem größeren Abstand zu UTC kleiner (früher) als diejenige mit dem kleineren Abstand. Infolgedessen sind die Datumsangaben nur schwach geordnet.
Seit 5.14 sind alle ungültigen Datumsangaben gleichwertig und kleiner als alle gültigen Datumsangaben.
Siehe auch operator==().
[noexcept]
bool operator>=(const QDateTime &lhs, const QDateTime &rhs)
Gibt true
zurück, wenn lhs später als oder gleich rhs ist; andernfalls wird false
zurückgegeben.
Zwei Datumsangaben, die unterschiedliche Zeitdarstellungen verwenden, können unterschiedliche Abstände zu UTC haben. In diesem Fall können sie gleichwertig verglichen werden, auch wenn ihre date() und time() unterschiedlich sind, wenn dieser Unterschied dem Unterschied im UTC-Offset entspricht. Wenn ihre date()
und time()
übereinstimmen, ist diejenige mit dem größeren Abstand zu UTC kleiner (früher) als diejenige mit dem kleineren Abstand. Infolgedessen sind die Datumsangaben nur schwach geordnet.
Seit 5.14 sind alle ungültigen Datumsangaben gleichwertig und kleiner als alle gültigen Datumsangaben.
Siehe auch operator==().
QDataStream &operator>>(QDataStream &in, QDateTime &dateTime)
Liest eine Datetime aus dem Stream in in dateTime.
Siehe auch Serialisierung von Qt-Datentypen.
© 2025 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.