katie/src/core/tools/qdatetime.h
Ivailo Monev 7c356db817 remove QDebug/qDebug/etc. from global header
Signed-off-by: Ivailo Monev <xakepa10@laimg.moc>
2016-10-18 22:06:15 +00:00

282 lines
9.9 KiB
C++

/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, 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.GPL 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.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QDATETIME_H
#define QDATETIME_H
#include <QtCore/qnamespace.h>
#include <QtCore/qsharedpointer.h>
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
class QDebug;
class Q_CORE_EXPORT QDate
{
public:
enum MonthNameType {
DateFormat = 0,
StandaloneFormat
};
public:
QDate() { jd = 0; }
QDate(int y, int m, int d);
bool isNull() const { return jd == 0; }
bool isValid() const;
int year() const;
int month() const;
int day() const;
int dayOfWeek() const;
int dayOfYear() const;
int daysInMonth() const;
int daysInYear() const;
int weekNumber(int *yearNum = 0) const;
#ifndef QT_NO_TEXTDATE
static QString shortMonthName(int month, MonthNameType type = QDate::DateFormat);
static QString shortDayName(int weekday, MonthNameType type = QDate::DateFormat);
static QString longMonthName(int month, MonthNameType type = QDate::DateFormat);
static QString longDayName(int weekday, MonthNameType type = QDate::DateFormat);
#endif // QT_NO_TEXTDATE
#ifndef QT_NO_DATESTRING
QString toString(Qt::DateFormat f = Qt::TextDate) const;
QString toString(const QString &format) const;
#endif
bool setYMD(int y, int m, int d);
bool setDate(int year, int month, int day);
void getDate(int *year, int *month, int *day);
QDate addDays(int days) const;
QDate addMonths(int months) const;
QDate addYears(int years) const;
int daysTo(const QDate &) const;
bool operator==(const QDate &other) const { return jd == other.jd; }
bool operator!=(const QDate &other) const { return jd != other.jd; }
bool operator<(const QDate &other) const { return jd < other.jd; }
bool operator<=(const QDate &other) const { return jd <= other.jd; }
bool operator>(const QDate &other) const { return jd > other.jd; }
bool operator>=(const QDate &other) const { return jd >= other.jd; }
static QDate currentDate();
#ifndef QT_NO_DATESTRING
static QDate fromString(const QString &s, Qt::DateFormat f = Qt::TextDate);
static QDate fromString(const QString &s, const QString &format);
#endif
static bool isValid(int y, int m, int d);
static bool isLeapYear(int year);
// ### Qt 5: remove these two functions
static uint gregorianToJulian(int y, int m, int d);
static void julianToGregorian(uint jd, int &y, int &m, int &d);
static inline QDate fromJulianDay(int jd) { QDate d; d.jd = jd; return d; }
inline int toJulianDay() const { return jd; }
private:
uint jd;
friend class QDateTime;
friend class QDateTimePrivate;
#ifndef QT_NO_DATASTREAM
friend Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QDate &);
friend Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QDate &);
#endif
};
Q_DECLARE_TYPEINFO(QDate, Q_MOVABLE_TYPE);
class Q_CORE_EXPORT QTime
{
public:
QTime(): mds(NullTime) {}
QTime(int h, int m, int s = 0, int ms = 0);
bool isNull() const { return mds == NullTime; }
bool isValid() const;
int hour() const;
int minute() const;
int second() const;
int msec() const;
#ifndef QT_NO_DATESTRING
QString toString(Qt::DateFormat f = Qt::TextDate) const;
QString toString(const QString &format) const;
#endif
bool setHMS(int h, int m, int s, int ms = 0);
QTime addSecs(int secs) const;
int secsTo(const QTime &) const;
QTime addMSecs(int ms) const;
int msecsTo(const QTime &) const;
bool operator==(const QTime &other) const { return mds == other.mds; }
bool operator!=(const QTime &other) const { return mds != other.mds; }
bool operator<(const QTime &other) const { return mds < other.mds; }
bool operator<=(const QTime &other) const { return mds <= other.mds; }
bool operator>(const QTime &other) const { return mds > other.mds; }
bool operator>=(const QTime &other) const { return mds >= other.mds; }
static QTime currentTime();
#ifndef QT_NO_DATESTRING
static QTime fromString(const QString &s, Qt::DateFormat f = Qt::TextDate);
static QTime fromString(const QString &s, const QString &format);
#endif
static bool isValid(int h, int m, int s, int ms = 0);
void start();
int restart();
int elapsed() const;
private:
enum TimeFlag { NullTime = -1 };
inline int ds() const { return mds == -1 ? 0 : mds; }
int mds;
friend class QDateTime;
friend class QDateTimePrivate;
#ifndef QT_NO_DATASTREAM
friend Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QTime &);
friend Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QTime &);
#endif
};
Q_DECLARE_TYPEINFO(QTime, Q_MOVABLE_TYPE);
class QDateTimePrivate;
class Q_CORE_EXPORT QDateTime
{
public:
QDateTime();
explicit QDateTime(const QDate &);
QDateTime(const QDate &, const QTime &, Qt::TimeSpec spec = Qt::LocalTime);
QDateTime(const QDateTime &other);
~QDateTime();
QDateTime &operator=(const QDateTime &other);
bool isNull() const;
bool isValid() const;
QDate date() const;
QTime time() const;
Qt::TimeSpec timeSpec() const;
qint64 toMSecsSinceEpoch() const;
uint toTime_t() const;
void setDate(const QDate &date);
void setTime(const QTime &time);
void setTimeSpec(Qt::TimeSpec spec);
void setMSecsSinceEpoch(qint64 msecs);
void setTime_t(uint secsSince1Jan1970UTC);
#ifndef QT_NO_DATESTRING
QString toString(Qt::DateFormat f = Qt::TextDate) const;
QString toString(const QString &format) const;
#endif
QDateTime addDays(int days) const;
QDateTime addMonths(int months) const;
QDateTime addYears(int years) const;
QDateTime addSecs(int secs) const;
QDateTime addMSecs(qint64 msecs) const;
QDateTime toTimeSpec(Qt::TimeSpec spec) const;
inline QDateTime toLocalTime() const { return toTimeSpec(Qt::LocalTime); }
inline QDateTime toUTC() const { return toTimeSpec(Qt::UTC); }
int daysTo(const QDateTime &) const;
int secsTo(const QDateTime &) const;
qint64 msecsTo(const QDateTime &) const;
bool operator==(const QDateTime &other) const;
inline bool operator!=(const QDateTime &other) const { return !(*this == other); }
bool operator<(const QDateTime &other) const;
inline bool operator<=(const QDateTime &other) const { return !(other < *this); }
inline bool operator>(const QDateTime &other) const { return other < *this; }
inline bool operator>=(const QDateTime &other) const { return !(*this < other); }
void setUtcOffset(int seconds);
int utcOffset() const;
static QDateTime currentDateTime();
static QDateTime currentDateTimeUtc();
#ifndef QT_NO_DATESTRING
static QDateTime fromString(const QString &s, Qt::DateFormat f = Qt::TextDate);
static QDateTime fromString(const QString &s, const QString &format);
#endif
static QDateTime fromTime_t(uint secsSince1Jan1970UTC);
static QDateTime fromMSecsSinceEpoch(qint64 msecs);
static qint64 currentMSecsSinceEpoch();
private:
friend class QDateTimePrivate;
void detach();
QExplicitlySharedDataPointer<QDateTimePrivate> d;
#ifndef QT_NO_DATASTREAM
friend Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QDateTime &);
friend Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QDateTime &);
#endif
};
Q_DECLARE_TYPEINFO(QDateTime, Q_MOVABLE_TYPE);
#ifndef QT_NO_DATASTREAM
Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QDate &);
Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QDate &);
Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QTime &);
Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QTime &);
Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QDateTime &);
Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QDateTime &);
#endif // QT_NO_DATASTREAM
#if !defined(QT_NO_DEBUG_STREAM) && !defined(QT_NO_DATESTRING)
Q_CORE_EXPORT QDebug operator<<(QDebug, const QDate &);
Q_CORE_EXPORT QDebug operator<<(QDebug, const QTime &);
Q_CORE_EXPORT QDebug operator<<(QDebug, const QDateTime &);
#endif
QT_END_NAMESPACE
QT_END_HEADER
#endif // QDATETIME_H