26 #include <klocalizedstring.h>
27 #include <ktimezone.h>
34 class DateTime::Private
38 Private(
const QDate& d,
const KDateTime::Spec& spec) : mDateTime(d, spec) {}
39 Private(
const QDate& d,
const QTime& t,
const KDateTime::Spec& spec) : mDateTime(d, t, spec) {}
40 Private(
const QDateTime& dt,
const KDateTime::Spec& spec) : mDateTime(dt, spec) {}
41 Private(
const KDateTime& dt) : mDateTime(dt) {}
43 static QTime mStartOfDay;
47 QTime DateTime::Private::mStartOfDay;
55 : d(new Private(d, spec))
60 : d(new Private(d, t, spec))
65 : d(new Private(dt, spec))
75 : d(new Private(*dt.d))
99 return d->mDateTime.isNull();
104 return d->mDateTime.isValid();
109 return d->mDateTime.isDateOnly();
114 d->mDateTime.setDateOnly(dateOnly);
119 return d->mDateTime.date();
124 d->mDateTime.setDate(date);
129 return d->mDateTime.dateTime();
139 return d->mDateTime.isDateOnly() ? d->mStartOfDay : d->mDateTime.time();
144 d->mDateTime.setTime(t);
149 if (d->mDateTime.isDateOnly())
151 QDateTime dt = d->mDateTime.dateTime();
152 dt.setTime(d->mStartOfDay);
155 return d->mDateTime.dateTime();
160 d->mDateTime.setDateTime(dt);
165 if (d->mDateTime.isDateOnly())
167 KDateTime dt = d->mDateTime;
168 dt.setTime(d->mStartOfDay);
176 if (d->mDateTime.isDateOnly())
178 KDateTime dt = d->mDateTime;
179 dt.setTime(QTime(0, 0));
187 return d->mDateTime.timeZone();
192 return d->mDateTime.timeSpec();
197 d->mDateTime.setTimeSpec(spec);
202 return d->mDateTime.timeType();
207 return d->mDateTime.isLocalZone();
212 return d->mDateTime.isClockTime();
217 return d->mDateTime.isUtc();
222 return d->mDateTime.isOffsetFromUtc();
227 return d->mDateTime.utcOffset();
232 return d->mDateTime.isSecondOccurrence();
237 d->mDateTime.setSecondOccurrence(second);
242 return DateTime(d->mDateTime.toUtc());
247 return DateTime(d->mDateTime.toOffsetFromUtc());
252 return DateTime(d->mDateTime.toOffsetFromUtc(utcOffset));
257 return DateTime(d->mDateTime.toLocalZone());
262 return DateTime(d->mDateTime.toClockTime());
267 return DateTime(d->mDateTime.toZone(zone));
272 return DateTime(d->mDateTime.toTimeSpec(spec));
277 return d->mDateTime.toTime_t();
282 d->mDateTime.setTime_t(secs);
287 return DateTime(d->mDateTime.addSecs(n));
292 return DateTime(d->mDateTime.addSecs(n * 60));
297 return DateTime(d->mDateTime.addDays(n));
302 return DateTime(d->mDateTime.addMonths(n));
307 return DateTime(d->mDateTime.addYears(n));
312 return d->mDateTime.daysTo(dt.d->mDateTime);
317 return d->mDateTime.secsTo(dt.d->mDateTime) / 60;
322 return d->mDateTime.secsTo(dt.d->mDateTime);
327 return d->mDateTime.secsTo_long(dt.d->mDateTime);
332 if (d->mDateTime.isDateOnly())
333 return d->mDateTime.date().toString(f);
335 return d->mDateTime.dateTime().toString(f);
340 if (d->mDateTime.isDateOnly())
341 return d->mDateTime.date().toString(format);
343 return d->mDateTime.dateTime().toString(format);
348 return KGlobal::locale()->formatDateTime(d->mDateTime, (shortFormat ? KLocale::ShortDate : KLocale::LongDate));
353 Private::mStartOfDay = sod;
358 return d->mDateTime.compare(other.d->mDateTime);
363 return Private::mStartOfDay;
368 return dt1.d->mDateTime == dt2.d->mDateTime;
371 bool operator==(
const KDateTime& dt1,
const DateTime& dt2)
373 return dt1 == dt2.d->mDateTime;
380 KDateTime dt = dt1.d->mDateTime.
addDays(1);
381 dt.
setTime(DateTime::Private::mStartOfDay);
382 return dt <= dt2.d->mDateTime;
386 KDateTime dt = dt2.d->mDateTime;
387 dt.
setTime(DateTime::Private::mStartOfDay);
388 return dt1.d->mDateTime < dt;
390 return dt1.d->mDateTime < dt2.d->mDateTime;