kalarm/lib
datetime.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef DATETIME_H
00021 #define DATETIME_H
00022
00023 #include <kdatetime.h>
00024
00025
00036 class DateTime
00037 {
00038 public:
00042 DateTime() { }
00044 DateTime(const QDate& d, const KDateTime::Spec& spec)
00045 : mDateTime(d, spec) { }
00047 DateTime(const QDate& d, const QTime& t, const KDateTime::Spec& spec)
00048 : mDateTime(d, t, spec) { }
00050 DateTime(const QDateTime& dt, const KDateTime::Spec& spec)
00051 : mDateTime(dt, spec) { }
00053 DateTime(const KDateTime& dt) : mDateTime(dt) { }
00057 DateTime& operator=(const KDateTime& dt)
00058 { mDateTime = dt; return *this; }
00060 bool isNull() const { return mDateTime.isNull(); }
00062 bool isValid() const { return mDateTime.isValid(); }
00064 bool isDateOnly() const { return mDateTime.isDateOnly(); }
00066 QDate date() const { return mDateTime.date(); }
00069 QDateTime rawDateTime() const { return mDateTime.dateTime(); }
00071 KDateTime kDateTime() const { return mDateTime; }
00075 QTime effectiveTime() const;
00080 QDateTime effectiveDateTime() const;
00085 KDateTime effectiveKDateTime() const;
00087 KTimeZone timeZone() const { return mDateTime.timeZone(); }
00089 KDateTime::Spec timeSpec() const { return mDateTime.timeSpec(); }
00092 KDateTime::SpecType timeType() const { return mDateTime.timeType(); }
00094 bool isLocalZone() const { return mDateTime.isLocalZone(); }
00096 bool isClockTime() const { return mDateTime.isClockTime(); }
00098 bool isUtc() const { return mDateTime.isUtc(); }
00100 bool isOffsetFromUtc() const { return mDateTime.isOffsetFromUtc(); }
00102 int utcOffset() const { return mDateTime.utcOffset(); }
00104 bool isSecondOccurrence() const { return mDateTime.isSecondOccurrence(); }
00106 DateTime toUtc() const { return DateTime(mDateTime.toUtc()); }
00109 DateTime toOffsetFromUtc() const { return DateTime(mDateTime.toOffsetFromUtc()); }
00111 DateTime toOffsetFromUtc(int utcOffset) const { return DateTime(mDateTime.toOffsetFromUtc(utcOffset)); }
00113 DateTime toLocalZone() const { return DateTime(mDateTime.toLocalZone()); }
00115 DateTime toClockTime() const { return DateTime(mDateTime.toClockTime()); }
00117 DateTime toZone(const KTimeZone& zone) const { return DateTime(mDateTime.toZone(zone)); }
00119 DateTime toTimeSpec(const KDateTime::Spec &spec) const { return DateTime(mDateTime.toTimeSpec(spec)); }
00122 uint toTime_t() const { return mDateTime.toTime_t(); }
00126 void setDateOnly(bool d) { mDateTime.setDateOnly(d); }
00128 void setDate(const QDate& d) { mDateTime.setDate(d); }
00131 void setTime(const QTime& t) { mDateTime.setTime(t); }
00133 void setDateTime(const QDateTime& dt) { mDateTime.setDateTime(dt); }
00135 void setTimeSpec(const KDateTime::Spec &spec) { mDateTime.setTimeSpec(spec); }
00137 void setSecondOccurrence(bool second) { mDateTime.setSecondOccurrence(second); }
00142 void setTime_t(uint secs) { mDateTime.setTime_t(secs); }
00144 DateTime addSecs(qint64 n) const { return DateTime(mDateTime.addSecs(n)); }
00146 DateTime addMins(qint64 n) const { return DateTime(mDateTime.addSecs(n * 60)); }
00148 DateTime addDays(int n) const { return DateTime(mDateTime.addDays(n)); }
00150 DateTime addMonths(int n) const { return DateTime(mDateTime.addMonths(n)); }
00152 DateTime addYears(int n) const { return DateTime(mDateTime.addYears(n)); }
00154 int daysTo(const DateTime& dt) const { return mDateTime.daysTo(dt.mDateTime); }
00156 int minsTo(const DateTime& dt) const { return mDateTime.secsTo(dt.mDateTime) / 60; }
00158 int secsTo(const DateTime& dt) const { return mDateTime.secsTo(dt.mDateTime); }
00159 qint64 secsTo_long(const DateTime& dt) const { return mDateTime.secsTo_long(dt.mDateTime); }
00164 QString toString(Qt::DateFormat f = Qt::TextDate) const
00165 {
00166 if (mDateTime.isDateOnly())
00167 return mDateTime.date().toString(f);
00168 else
00169 return mDateTime.dateTime().toString(f);
00170 }
00175 QString toString(const QString& format) const
00176 {
00177 if (mDateTime.isDateOnly())
00178 return mDateTime.date().toString(format);
00179 else
00180 return mDateTime.dateTime().toString(format);
00181 }
00186 QString formatLocale(bool shortFormat = true) const;
00190 static void setStartOfDay(const QTime& sod) { mStartOfDay = sod; }
00192 KDateTime::Comparison compare(const DateTime &other) const { return mDateTime.compare(other.mDateTime); }
00194 static QTime startOfDay() { return mStartOfDay; }
00195
00196 friend bool operator==(const DateTime& dt1, const DateTime& dt2);
00197 friend bool operator==(const KDateTime& dt1, const DateTime& dt2);
00198 friend bool operator<(const DateTime& dt1, const DateTime& dt2);
00199 friend bool operator<(const KDateTime& dt1, const DateTime& dt2);
00200
00201 private:
00202 static QTime mStartOfDay;
00203 KDateTime mDateTime;
00204 };
00205
00207 inline bool operator==(const DateTime& dt1, const DateTime& dt2) { return dt1.mDateTime == dt2.mDateTime; }
00208 inline bool operator==(const KDateTime& dt1, const DateTime& dt2) { return dt1 == dt2.mDateTime; }
00213 inline bool operator<(const DateTime& dt1, const DateTime& dt2) { return dt1.mDateTime < dt2.mDateTime; }
00214 inline bool operator<(const KDateTime& dt1, const DateTime& dt2) { return dt1 < dt2.mDateTime; }
00216 inline bool operator!=(const DateTime& dt1, const DateTime& dt2) { return !operator==(dt1, dt2); }
00217 inline bool operator!=(const KDateTime& dt1, const DateTime& dt2) { return !operator==(dt1, dt2); }
00222 inline bool operator>(const DateTime& dt1, const DateTime& dt2) { return operator<(dt2, dt1); }
00223 inline bool operator>(const KDateTime& dt1, const DateTime& dt2) { return operator<(dt2, dt1); }
00228 inline bool operator>=(const DateTime& dt1, const DateTime& dt2) { return !operator<(dt1, dt2); }
00229 inline bool operator>=(const KDateTime& dt1, const DateTime& dt2) { return !operator<(dt1, dt2); }
00234 inline bool operator<=(const DateTime& dt1, const DateTime& dt2) { return !operator<(dt2, dt1); }
00235 inline bool operator<=(const KDateTime& dt1, const DateTime& dt2) { return !operator<(dt2, dt1); }
00236
00237 #endif // DATETIME_H