Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qdatetime.cpp File Reference

(988b7b42fae84eb1c0a8febd0083630eb9177780)

#include "qdatetime.h"
#include "qcalendar.h"
#include "qdatastream.h"
#include "qdebug.h"
#include "qlocale.h"
#include "qset.h"
#include "private/qcalendarmath_p.h"
#include "private/qdatetime_p.h"
#include "private/qgregoriancalendar_p.h"
#include "private/qlocale_tools_p.h"
#include "private/qlocaltime_p.h"
#include "private/qnumeric_p.h"
#include "private/qstringconverter_p.h"
#include "private/qstringiterator_p.h"
#include <cmath>
#include <private/qtools_p.h>
Include dependency graph for qdatetime.cpp:

Go to the source code of this file.

Typedefs

typedef QDateTimePrivate::QDateTimeShortData ShortData
typedef QDateTimePrivate::QDateTimeData QDateTimeData

Enumerations

enum class  DaySide { Start , End , Start , End }
enum class  DaySide { Start , End , Start , End }

Functions

static QDate fixedDate (QCalendar::YearMonthDay parts, QCalendar cal)
static QDate fixedDate (QCalendar::YearMonthDay parts)
static QString toOffsetString (Qt::DateFormat format, int offset)
static bool inDateTimeRange (qint64 jd, DaySide side)
static QDateTime toEarliest (QDate day, const QTimeZone &zone)
static QDateTime toLatest (QDate day, const QTimeZone &zone)
static qint64 msecsToJulianDay (qint64 msecs)
static QDate msecsToDate (qint64 msecs)
static QTime msecsToTime (qint64 msecs)
static bool daysAndMillisOverflow (qint64 days, qint64 millisInDay, qint64 *sumMillis)
static qint64 timeToMSecs (QDate date, QTime time)
static bool millisInSystemRange (qint64 millis, qint64 slack=0)
static int systemTimeYearMatching (int year)
static auto millisToWithinRange (qint64 millis)
static constexpr QDateTimePrivate::TransitionOptions toTransitionOptions (QDateTime::TransitionResolution res)
static constexpr QDateTimePrivate::TransitionOptions toTransitionOptions (QDateTimePrivate::DaylightStatus dst)
static QDateTimePrivate::ZoneState stateAtMillis (const QTimeZone &zone, qint64 millis, QDateTimePrivate::TransitionOptions resolve)
static bool specCanBeSmall (Qt::TimeSpec spec)
static bool msecsCanBeSmall (qint64 msecs)
static constexpr QDateTimePrivate::StatusFlags mergeSpec (QDateTimePrivate::StatusFlags status, Qt::TimeSpec spec)
static constexpr Qt::TimeSpec extractSpec (QDateTimePrivate::StatusFlags status)
static constexpr QDateTimePrivate::StatusFlags mergeDaylightStatus (QDateTimePrivate::StatusFlags sf, QDateTimePrivate::DaylightStatus status)
static constexpr QDateTimePrivate::DaylightStatus extractDaylightStatus (QDateTimePrivate::StatusFlags status)
static qint64 getMSecs (const QDateTimeData &d)
static QDateTimePrivate::StatusFlags getStatus (const QDateTimeData &d)
static Qt::TimeSpec getSpec (const QDateTimeData &d)
static bool usesSameOffset (const QDateTimeData &a, const QDateTimeData &b)
bool areFarEnoughApart (qint64 leftMillis, qint64 rightMillis)
static void refreshZonedDateTime (QDateTimeData &d, const QTimeZone &zone, QDateTimePrivate::TransitionOptions resolve)
static void refreshSimpleDateTime (QDateTimeData &d)
static void checkValidDateTime (QDateTimeData &d, QDateTime::TransitionResolution resolve)
static void reviseTimeZone (QDateTimeData &d, const QTimeZone &zone, QDateTime::TransitionResolution resolve)
static void setDateTime (QDateTimeData &d, QDate date, QTime time)
static std::pair< QDate, QTimegetDateTime (const QDateTimeData &d)
static void massageAdjustedDateTime (QDateTimeData &d, QDate date, QTime time, bool forward)
Qt::weak_ordering compareThreeWay (const QDateTime &lhs, const QDateTime &rhs)
size_t qHash (const QDateTime &key, size_t seed)
 \qhashold{QHash}
size_t qHash (QDate key, size_t seed) noexcept
 \qhashold{QHash}
size_t qHash (QTime key, size_t seed) noexcept
 \qhashold{QHash}

Typedef Documentation

◆ QDateTimeData

Definition at line 2747 of file qdatetime.cpp.

◆ ShortData

Enumeration Type Documentation

◆ DaySide [1/2]

enum class DaySide
strong
Enumerator
Start 
End 
Start 
End 

Definition at line 858 of file qdatetime.cpp.

◆ DaySide [2/2]

enum class DaySide
strong
Enumerator
Start 
End 
Start 
End 

Definition at line 858 of file qdatetime.cpp.

Function Documentation

◆ areFarEnoughApart()

bool areFarEnoughApart ( qint64 leftMillis,
qint64 rightMillis )

Definition at line 3219 of file qdatetime.cpp.

◆ checkValidDateTime()

void checkValidDateTime ( QDateTimeData & d,
QDateTime::TransitionResolution resolve )
static

Definition at line 3302 of file qdatetime.cpp.

References refreshSimpleDateTime().

Here is the call graph for this function:

◆ compareThreeWay()

Qt::weak_ordering compareThreeWay ( const QDateTime & lhs,
const QDateTime & rhs )

Definition at line 5342 of file qdatetime.cpp.

◆ daysAndMillisOverflow()

bool daysAndMillisOverflow ( qint64 days,
qint64 millisInDay,
qint64 * sumMillis )
inlinestatic

Definition at line 2767 of file qdatetime.cpp.

◆ extractDaylightStatus()

constexpr QDateTimePrivate::DaylightStatus extractDaylightStatus ( QDateTimePrivate::StatusFlags status)
inlinestaticconstexpr

Definition at line 3143 of file qdatetime.cpp.

◆ extractSpec()

constexpr Qt::TimeSpec extractSpec ( QDateTimePrivate::StatusFlags status)
inlinestaticconstexpr

Definition at line 3123 of file qdatetime.cpp.

◆ fixedDate() [1/2]

QDate fixedDate ( QCalendar::YearMonthDay parts)
inlinestatic

Definition at line 63 of file qdatetime.cpp.

◆ fixedDate() [2/2]

QDate fixedDate ( QCalendar::YearMonthDay parts,
QCalendar cal )
inlinestatic

Definition at line 54 of file qdatetime.cpp.

◆ getDateTime()

std::pair< QDate, QTime > getDateTime ( const QDateTimeData & d)
static

Definition at line 3418 of file qdatetime.cpp.

◆ getMSecs()

qint64 getMSecs ( const QDateTimeData & d)
inlinestatic

Definition at line 3152 of file qdatetime.cpp.

◆ getSpec()

Qt::TimeSpec getSpec ( const QDateTimeData & d)
inlinestatic

Definition at line 3172 of file qdatetime.cpp.

◆ getStatus()

QDateTimePrivate::StatusFlags getStatus ( const QDateTimeData & d)
inlinestatic

Definition at line 3162 of file qdatetime.cpp.

◆ inDateTimeRange()

bool inDateTimeRange ( qint64 jd,
DaySide side )
static

Definition at line 860 of file qdatetime.cpp.

References End, and Start.

◆ massageAdjustedDateTime()

void massageAdjustedDateTime ( QDateTimeData & d,
QDate date,
QTime time,
bool forward )
inlinestatic

Definition at line 4812 of file qdatetime.cpp.

References refreshSimpleDateTime().

Here is the call graph for this function:

◆ mergeDaylightStatus()

constexpr QDateTimePrivate::StatusFlags mergeDaylightStatus ( QDateTimePrivate::StatusFlags sf,
QDateTimePrivate::DaylightStatus status )
inlinestaticconstexpr

Definition at line 3130 of file qdatetime.cpp.

◆ mergeSpec()

constexpr QDateTimePrivate::StatusFlags mergeSpec ( QDateTimePrivate::StatusFlags status,
Qt::TimeSpec spec )
inlinestaticconstexpr

Definition at line 3116 of file qdatetime.cpp.

◆ millisInSystemRange()

bool millisInSystemRange ( qint64 millis,
qint64 slack = 0 )
inlinestatic

Tests whether system functions can handle a given time.

The range of milliseconds for which the time_t-based functions work depends somewhat on platform (see computeSystemMillisRange() for details). This function tests whether the UTC time millis milliseconds from the epoch is in the supported range.

To test a local time, pass an upper bound on the magnitude of time-zone correction potentially needed as slack: in this case the range is extended by this many milliseconds at each end (where applicable). The function then returns true precisely if millis is within this (possibly) widened range. This doesn't guarantee that the time_t functions can handle the time, so check their returns to be sure. Values for which the function returns false should be assumed unrepresentable.

Definition at line 2806 of file qdatetime.cpp.

◆ millisToWithinRange()

auto millisToWithinRange ( qint64 millis)
static

Definition at line 2902 of file qdatetime.cpp.

◆ msecsCanBeSmall()

bool msecsCanBeSmall ( qint64 msecs)
inlinestatic

Definition at line 3105 of file qdatetime.cpp.

◆ msecsToDate()

QDate msecsToDate ( qint64 msecs)
static

Definition at line 2755 of file qdatetime.cpp.

◆ msecsToJulianDay()

qint64 msecsToJulianDay ( qint64 msecs)
static

Definition at line 2750 of file qdatetime.cpp.

◆ msecsToTime()

QTime msecsToTime ( qint64 msecs)
static

Definition at line 2760 of file qdatetime.cpp.

◆ qHash() [1/3]

size_t qHash ( const QDateTime & key,
size_t seed )

\qhashold{QHash}

Since
5.0

Definition at line 6386 of file qdatetime.cpp.

◆ qHash() [2/3]

size_t qHash ( QDate key,
size_t seed )
noexcept

\qhashold{QHash}

Since
5.0

Definition at line 6399 of file qdatetime.cpp.

◆ qHash() [3/3]

size_t qHash ( QTime key,
size_t seed )
noexcept

\qhashold{QHash}

Since
5.0

Definition at line 6408 of file qdatetime.cpp.

◆ refreshSimpleDateTime()

void refreshSimpleDateTime ( QDateTimeData & d)
static

Definition at line 3288 of file qdatetime.cpp.

Referenced by checkValidDateTime(), massageAdjustedDateTime(), and reviseTimeZone().

Here is the caller graph for this function:

◆ refreshZonedDateTime()

void refreshZonedDateTime ( QDateTimeData & d,
const QTimeZone & zone,
QDateTimePrivate::TransitionOptions resolve )
static

Definition at line 3228 of file qdatetime.cpp.

◆ reviseTimeZone()

void reviseTimeZone ( QDateTimeData & d,
const QTimeZone & zone,
QDateTime::TransitionResolution resolve )
static

Definition at line 3320 of file qdatetime.cpp.

References refreshSimpleDateTime().

Here is the call graph for this function:

◆ setDateTime()

void setDateTime ( QDateTimeData & d,
QDate date,
QTime time )
static

Definition at line 3363 of file qdatetime.cpp.

◆ specCanBeSmall()

bool specCanBeSmall ( Qt::TimeSpec spec)
inlinestatic

Definition at line 3100 of file qdatetime.cpp.

◆ stateAtMillis()

QDateTimePrivate::ZoneState stateAtMillis ( const QTimeZone & zone,
qint64 millis,
QDateTimePrivate::TransitionOptions resolve )
inlinestatic

Definition at line 3088 of file qdatetime.cpp.

◆ systemTimeYearMatching()

int systemTimeYearMatching ( int year)
static

Returns a year, in the system range, with the same day-of-week pattern

Returns the number of a year, in the range supported by system time_t functions, that starts and ends on the same days of the week as year. This implies it is a leap year precisely if year is. If year is before the epoch, a year early in the supported range is used; otherwise, one late in that range. For a leap year, this may be as much as 26 years years from the range's relevant end; for normal years at most a decade from the end.

This ensures that any DST rules based on, e.g., the last Sunday in a particular month will select the same date in the returned year as they would if applied to year. Of course, the zone's rules may be different in year than in the selected year, but it's hard to do better.

Definition at line 2829 of file qdatetime.cpp.

◆ timeToMSecs()

qint64 timeToMSecs ( QDate date,
QTime time )
static

Definition at line 2774 of file qdatetime.cpp.

◆ toEarliest()

QDateTime toEarliest ( QDate day,
const QTimeZone & zone )
static

Definition at line 880 of file qdatetime.cpp.

◆ toLatest()

QDateTime toLatest ( QDate day,
const QTimeZone & zone )
static

Definition at line 1036 of file qdatetime.cpp.

◆ toOffsetString()

QString toOffsetString ( Qt::DateFormat format,
int offset )
static

Definition at line 287 of file qdatetime.cpp.

◆ toTransitionOptions() [1/2]

constexpr QDateTimePrivate::TransitionOptions toTransitionOptions ( QDateTime::TransitionResolution res)
staticconstexpr

Definition at line 2971 of file qdatetime.cpp.

◆ toTransitionOptions() [2/2]

constexpr QDateTimePrivate::TransitionOptions toTransitionOptions ( QDateTimePrivate::DaylightStatus dst)
staticconstexpr

Definition at line 2996 of file qdatetime.cpp.

◆ usesSameOffset()

bool usesSameOffset ( const QDateTimeData & a,
const QDateTimeData & b )
inlinestatic

Definition at line 3182 of file qdatetime.cpp.