// qdatetime.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2025 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDate /TypeHintIn="Union[QDate, datetime.date]"/ { %TypeHeaderCode #include %End %TypeCode #include %End %ConvertToTypeCode // Allow a Python date object whenever a QDate is expected. if (sipIsErr == NULL) return (sipGetDate(sipPy, 0) || sipCanConvertToType(sipPy, sipType_QDate, SIP_NO_CONVERTORS)); sipDateDef py_date; if (sipGetDate(sipPy, &py_date)) { *sipCppPtr = new QDate(py_date.pd_year, py_date.pd_month, py_date.pd_day); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QDate, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End %PickleCode sipRes = Py_BuildValue("iii", sipCpp->year(), sipCpp->month(), sipCpp->day()); %End public: QDate(); QDate(int y, int m, int d); QDate(int y, int m, int d, QCalendar cal); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { sipRes = PyUnicode_FromString("PyQt6.QtCore.QDate()"); } else { sipRes = PyUnicode_FromFormat( "PyQt6.QtCore.QDate(%i, %i, %i)", sipCpp->year(), sipCpp->month(), sipCpp->day()); } %End Py_hash_t __hash__() const; %MethodCode sipRes = qHash(sipCpp->toString(Qt::ISODate)); %End SIP_PYOBJECT toPyDate() const /TypeHint="datetime.date"/; %MethodCode // Convert to a Python date object. sipDateDef py_date; py_date.pd_year = sipCpp->year(); py_date.pd_month = sipCpp->month(); py_date.pd_day = sipCpp->day(); sipRes = sipFromDate(&py_date); %End bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End bool isValid() const; int year() const; int year(QCalendar cal) const; int month() const; int month(QCalendar cal) const; int day() const; int day(QCalendar cal) const; int dayOfWeek() const; int dayOfWeek(QCalendar cal) const; int dayOfYear() const; int dayOfYear(QCalendar cal) const; int daysInMonth() const; int daysInMonth(QCalendar cal) const; int daysInYear() const; int daysInYear(QCalendar cal) const; int weekNumber(int *yearNumber = 0) const; // In Qt v6.7 this was replaced by two overloads bu twe need to retain the optional keyword argument. QString toString(const QString &format, QCalendar cal = QCalendar()) const; QString toString(Qt::DateFormat format = Qt::TextDate) const; QDate addDays(qint64 days) const; QDate addMonths(int months) const; QDate addMonths(int months, QCalendar cal) const; QDate addYears(int years) const; QDate addYears(int years, QCalendar cal) const; static QDate currentDate(); static QDate fromString(const QString &string, Qt::DateFormat format = Qt::TextDate); // Qt v6.7 replaced this with two overloads but we need to retain the optional keyword argument. static QDate fromString(const QString &string, const QString &format, QCalendar cal = QCalendar()); %If (Qt_6_7_0 -) // This replaces two overloads added in Qy v6.7 designed to maintain compatibility regarding optional keyword arguments. static QDate fromString(const QString &string, const QString &format, int baseYear, QCalendar cal = QCalendar()); %End static bool isValid(int y, int m, int d); static bool isLeapYear(int year); static QDate fromJulianDay(qint64 jd); qint64 toJulianDay() const; bool setDate(int year, int month, int date); void getDate(int *year, int *month, int *day) const; // The arguments are marked as deprecated in Qt v6.9. QDateTime startOfDay(Qt::TimeSpec spec = Qt::LocalTime, int offsetSeconds = 0) const; QDateTime startOfDay(const QTimeZone &zone) const; // The arguments are marked as deprecated in Qt v6.9. QDateTime endOfDay(Qt::TimeSpec spec = Qt::LocalTime, int offsetSeconds = 0) const; QDateTime endOfDay(const QTimeZone &zone) const; bool setDate(int year, int month, int day, QCalendar cal); qint64 daysTo(QDate d) const; }; class QTime /TypeHintIn="Union[QTime, datetime.time]"/ { %TypeHeaderCode #include %End %TypeCode #include %End %ConvertToTypeCode // Allow a Python time object whenever a QTime is expected. if (sipIsErr == NULL) return (sipGetTime(sipPy, 0) || sipCanConvertToType(sipPy, sipType_QTime, SIP_NO_CONVERTORS)); sipTimeDef py_time; if (sipGetTime(sipPy, &py_time)) { *sipCppPtr = new QTime(py_time.pt_hour, py_time.pt_minute, py_time.pt_second, py_time.pt_microsecond / 1000); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QTime, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End %PickleCode sipRes = Py_BuildValue("iiii", sipCpp->hour(), sipCpp->minute(), sipCpp->second(), sipCpp->msec()); %End public: QTime(); QTime(int h, int m, int second = 0, int msec = 0); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { sipRes = PyUnicode_FromString("PyQt6.QtCore.QTime()"); } else { sipRes = PyUnicode_FromFormat("PyQt6.QtCore.QTime(%i, %i", sipCpp->hour(), sipCpp->minute()); if (sipCpp->second() || sipCpp->msec()) { qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat(", %i", sipCpp->second())); if (sipCpp->msec()) qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat(", %i", sipCpp->msec())); } qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromString(")")); } %End Py_hash_t __hash__() const; %MethodCode sipRes = qHash(sipCpp->toString(Qt::ISODate)); %End SIP_PYOBJECT toPyTime() const /TypeHint="datetime.time"/; %MethodCode // Convert to a Python time object. sipTimeDef py_time; py_time.pt_hour = sipCpp->hour(); py_time.pt_minute = sipCpp->minute(); py_time.pt_second = sipCpp->second(); py_time.pt_microsecond = sipCpp->msec() * 1000; sipRes = sipFromTime(&py_time); %End bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End bool isValid() const; int hour() const; int minute() const; int second() const; int msec() const; QString toString(Qt::DateFormat format = Qt::TextDate) const; QString toString(const QString &format) const; bool setHMS(int h, int m, int s, int msec = 0); QTime addSecs(int secs) const; QTime addMSecs(int ms) const; static QTime currentTime(); static QTime fromString(const QString &string, Qt::DateFormat format = Qt::TextDate); static QTime fromString(const QString &s, const QString &format); static bool isValid(int h, int m, int s, int msec = 0); static QTime fromMSecsSinceStartOfDay(int msecs); int msecsSinceStartOfDay() const; int secsTo(QTime t) const; int msecsTo(QTime t) const; }; class QDateTime /TypeHintIn="Union[QDateTime, datetime.datetime]"/ { %TypeHeaderCode #include %End %TypeCode #include %End %ConvertToTypeCode // Allow a Python datetime object whenever a QDateTime is expected. if (sipIsErr == NULL) return (sipGetDateTime(sipPy, 0, 0) || sipCanConvertToType(sipPy, sipType_QDateTime, SIP_NO_CONVERTORS)); sipDateDef py_date; sipTimeDef py_time; if (sipGetDateTime(sipPy, &py_date, &py_time)) { QDate qdate(py_date.pd_year, py_date.pd_month, py_date.pd_day); QTime qtime(py_time.pt_hour, py_time.pt_minute, py_time.pt_second, py_time.pt_microsecond / 1000); QDateTime *qdt = new QDateTime(qdate, qtime); *sipCppPtr = qdt; return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QDateTime, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End %PickleCode QDate qd = sipCpp->date(); QTime qt = sipCpp->time(); sipRes = Py_BuildValue("iiiiiiii", qd.year(), qd.month(), qd.day(), qt.hour(), qt.minute(), qt.second(), qt.msec(), (int)sipCpp->timeSpec()); %End public: %If (Qt_6_7_0 -) enum class TransitionResolution { Reject, RelativeToBefore, RelativeToAfter, PreferBefore, PreferAfter, PreferStandard, PreferDaylightSaving, LegacyBehavior, }; %End QDateTime(); QDateTime(const QDateTime &other); QDateTime(int year, int month, int day, int hour, int minute, int second = 0, int msec = 0, int timeSpec = 0) /NoDerived/; %MethodCode // This ctor is mainly supplied to allow pickling. QDate qd(a0, a1, a2); QTime qt(a3, a4, a5, a6); sipCpp = new QDateTime(qd, qt, (Qt::TimeSpec)a7); %End %If (Qt_6_7_0 -) // The resolve argument is not optional so that the overload with deprecated arguments continues to work. QDateTime(QDate date, QTime time, QDateTime::TransitionResolution resolve) [(QDate date, QTime time, QDateTime::TransitionResolution resolve = QDateTime::TransitionResolution::LegacyBehavior)]; %End // The optional arguments are marked as deprecated in Qt v6.9. QDateTime(QDate date, QTime time, Qt::TimeSpec spec = Qt::LocalTime, int offsetSeconds = 0); %If (Qt_6_7_0 -) QDateTime(QDate date, QTime time, const QTimeZone &timeZone, QDateTime::TransitionResolution resolve = QDateTime::TransitionResolution::LegacyBehavior); %End %If (- Qt_6_7_0) QDateTime(QDate date, QTime time, const QTimeZone &timeZone); %End ~QDateTime(); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { sipRes = PyUnicode_FromString("PyQt6.QtCore.QDateTime()"); } else { QDate qd = sipCpp->date(); QTime qt = sipCpp->time(); sipRes = PyUnicode_FromFormat( "PyQt6.QtCore.QDateTime(%i, %i, %i, %i, %i", qd.year(), qd.month(), qd.day(), qt.hour(), qt.minute()); if (qt.second() || qt.msec() || sipCpp->timeSpec() != Qt::LocalTime) { qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat(", %i", qt.second())); if (qt.msec() || sipCpp->timeSpec() != Qt::LocalTime) { qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat(", %i", qt.msec())); if (sipCpp->timeSpec() != Qt::LocalTime) qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat(", PyQt6.QtCore.Qt.TimeSpec(%i)", (int)sipCpp->timeSpec())); } } qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromString(")")); } %End Py_hash_t __hash__() const; %MethodCode sipRes = qHash(sipCpp->toString(Qt::ISODate)); %End SIP_PYOBJECT toPyDateTime() const /TypeHint="datetime.datetime"/; %MethodCode // Convert to a Python datetime object. sipDateDef py_date; QDate qd = sipCpp->date(); py_date.pd_year = qd.year(); py_date.pd_month = qd.month(); py_date.pd_day = qd.day(); sipTimeDef py_time; QTime qt = sipCpp->time(); py_time.pt_hour = qt.hour(); py_time.pt_minute = qt.minute(); py_time.pt_second = qt.second(); py_time.pt_microsecond = qt.msec() * 1000; sipRes = sipFromDateTime(&py_date, &py_time); %End bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End bool isValid() const; QDate date() const; QTime time() const; Qt::TimeSpec timeSpec() const; void setTimeSpec(Qt::TimeSpec spec); // This was replaced with two overloads in Qt v6.7 but we need the optional keyword argument. QString toString(const QString &format, QCalendar cal = QCalendar()) const; QString toString(Qt::DateFormat format = Qt::TextDate) const; QDateTime addDays(qint64 days) const; QDateTime addMonths(int months) const; QDateTime addYears(int years) const; QDateTime addSecs(qint64 secs) const; QDateTime addMSecs(qint64 msecs) const; QDateTime toTimeSpec(Qt::TimeSpec spec) const; QDateTime toLocalTime() const; QDateTime toUTC() const; qint64 daysTo(const QDateTime &) const; qint64 secsTo(const QDateTime &) const; static QDateTime currentDateTime(); %If (Qt_6_5_0 -) static QDateTime currentDateTime(const QTimeZone &zone); %End static QDateTime fromString(const QString &string, Qt::DateFormat format = Qt::TextDate); // Qt v6.7 replaced this with two overloads but we need to retain the optional keyword argument. static QDateTime fromString(const QString &string, const QString &format, QCalendar cal = QCalendar()); %If (Qt_6_7_0 -) // This replaces two overloads added in Qy v6.7 designed to maintain compatibility regarding optional keyword arguments. static QDateTime fromString(const QString &string, const QString &format, int baseYear, QCalendar cal = QCalendar()); %End qint64 toMSecsSinceEpoch() const; void setMSecsSinceEpoch(qint64 msecs); qint64 msecsTo(const QDateTime &) const; static QDateTime currentDateTimeUtc(); static qint64 currentMSecsSinceEpoch(); void swap(QDateTime &other /Constrained/); int offsetFromUtc() const; QTimeZone timeZone() const; QString timeZoneAbbreviation() const; bool isDaylightTime() const; void setOffsetFromUtc(int offsetSeconds); %If (Qt_6_7_0 -) void setTimeZone(const QTimeZone &toZone, QDateTime::TransitionResolution resolve = QDateTime::TransitionResolution::LegacyBehavior); %End %If (- Qt_6_7_0) void setTimeZone(const QTimeZone &toZone); %End QDateTime toOffsetFromUtc(int offsetSeconds) const; QDateTime toTimeZone(const QTimeZone &toZone) const; // The optional arguments are marked as deprecated in Qt v6.9. static QDateTime fromMSecsSinceEpoch(qint64 msecs, Qt::TimeSpec spec = Qt::LocalTime, int offsetSeconds = 0); static QDateTime fromMSecsSinceEpoch(qint64 msecs, const QTimeZone &timeZone); qint64 toSecsSinceEpoch() const; void setSecsSinceEpoch(qint64 secs); // The optional arguments are marked as deprecated in Qt v6.9. static QDateTime fromSecsSinceEpoch(qint64 secs, Qt::TimeSpec spec = Qt::LocalTime, int offsetSeconds = 0); static QDateTime fromSecsSinceEpoch(qint64 secs, const QTimeZone &timeZone); static qint64 currentSecsSinceEpoch(); enum class YearRange : qint32 { First, Last, }; %If (Qt_6_7_0 -) void setDate(QDate date, QDateTime::TransitionResolution resolve = QDateTime::TransitionResolution::LegacyBehavior); %End %If (- Qt_6_7_0) void setDate(QDate date); %End %If (Qt_6_7_0 -) void setTime(QTime time, QDateTime::TransitionResolution resolve = QDateTime::TransitionResolution::LegacyBehavior); %End %If (- Qt_6_7_0) void setTime(QTime time); %End %If (Qt_6_5_0 -) QTimeZone timeRepresentation() const; %End }; QDataStream &operator<<(QDataStream &, QDate) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QDate & /Constrained/) /ReleaseGIL/; QDataStream &operator<<(QDataStream &, QTime) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QTime & /Constrained/) /ReleaseGIL/; QDataStream &operator<<(QDataStream &, const QDateTime &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QDateTime & /Constrained/) /ReleaseGIL/; %If (Qt_6_7_0 -) bool operator==(const QDate &lhs, const QDate &rhs); %End %If (- Qt_6_7_0) bool operator==(QDate lhs, QDate rhs); %End %If (Qt_6_7_0 -) bool operator==(const QTime &lhs, const QTime &rhs); %End %If (- Qt_6_7_0) bool operator==(QTime lhs, QTime rhs); %End bool operator==(const QDateTime &lhs, const QDateTime &rhs); %If (Qt_6_7_0 -) bool operator!=(const QDate &lhs, const QDate &rhs); %End %If (- Qt_6_7_0) bool operator!=(QDate lhs, QDate rhs); %End %If (Qt_6_7_0 -) bool operator!=(const QTime &lhs, const QTime &rhs); %End %If (- Qt_6_7_0) bool operator!=(QTime lhs, QTime rhs); %End bool operator!=(const QDateTime &lhs, const QDateTime &rhs); %If (Qt_6_7_0 -) bool operator<(const QDate &lhs, const QDate &rhs); %End %If (- Qt_6_7_0) bool operator<(QDate lhs, QDate rhs); %End %If (Qt_6_7_0 -) bool operator<(const QTime &lhs, const QTime &rhs); %End %If (- Qt_6_7_0) bool operator<(QTime lhs, QTime rhs); %End bool operator<(const QDateTime &lhs, const QDateTime &rhs); %If (Qt_6_7_0 -) bool operator<=(const QDate &lhs, const QDate &rhs); %End %If (- Qt_6_7_0) bool operator<=(QDate lhs, QDate rhs); %End %If (Qt_6_7_0 -) bool operator<=(const QTime &lhs, const QTime &rhs); %End %If (- Qt_6_7_0) bool operator<=(QTime lhs, QTime rhs); %End bool operator<=(const QDateTime &lhs, const QDateTime &rhs); %If (Qt_6_7_0 -) bool operator>(const QDate &lhs, const QDate &rhs); %End %If (- Qt_6_7_0) bool operator>(QDate lhs, QDate rhs); %End %If (Qt_6_7_0 -) bool operator>(const QTime &lhs, const QTime &rhs); %End %If (- Qt_6_7_0) bool operator>(QTime lhs, QTime rhs); %End bool operator>(const QDateTime &lhs, const QDateTime &rhs); %If (Qt_6_7_0 -) bool operator>=(const QDate &lhs, const QDate &rhs); %End %If (- Qt_6_7_0) bool operator>=(QDate lhs, QDate rhs); %End %If (Qt_6_7_0 -) bool operator>=(const QTime &lhs, const QTime &rhs); %End %If (- Qt_6_7_0) bool operator>=(QTime lhs, QTime rhs); %End bool operator>=(const QDateTime &lhs, const QDateTime &rhs);