• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdepimlibs-4.14.10 API Reference
  • KDE Home
  • Contact Us
 

KAlarm Library

  • kalarmcal
datetime.cpp
1/*
2 * datetime.cpp - date/time with start-of-day time for date-only values
3 * This file is part of kalarmcal library, which provides access to KAlarm
4 * calendar data.
5 * Copyright © 2003,2005-2007,2009-2011 by David Jarvie <djarvie@kde.org>
6 *
7 * This library is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU Library General Public License as published
9 * by the Free Software Foundation; either version 2 of the License, or (at
10 * your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful, but WITHOUT
13 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
15 * License for more details.
16 *
17 * You should have received a copy of the GNU Library General Public License
18 * along with this library; see the file COPYING.LIB. If not, write to the
19 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20 * MA 02110-1301, USA.
21 */
22#include "datetime.h"
23
24#include <kglobal.h>
25#include <klocale.h>
26#include <klocalizedstring.h>
27#include <ktimezone.h>
28
29#include <QDateTime>
30
31namespace KAlarmCal
32{
33
34class DateTime::Private
35{
36 public:
37 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) {}
42
43 static QTime mStartOfDay;
44 KDateTime mDateTime;
45};
46
47QTime DateTime::Private::mStartOfDay;
48
49DateTime::DateTime()
50 : d(new Private)
51{
52}
53
54DateTime::DateTime(const QDate& d, const KDateTime::Spec& spec)
55 : d(new Private(d, spec))
56{
57}
58
59DateTime::DateTime(const QDate& d, const QTime& t, const KDateTime::Spec& spec)
60 : d(new Private(d, t, spec))
61{
62}
63
64DateTime::DateTime(const QDateTime& dt, const KDateTime::Spec& spec)
65 : d(new Private(dt, spec))
66{
67}
68
69DateTime::DateTime(const KDateTime& dt)
70 : d(new Private(dt))
71{
72}
73
74DateTime::DateTime(const DateTime& dt)
75 : d(new Private(*dt.d))
76{
77}
78
79DateTime::~DateTime()
80{
81 delete d;
82}
83
84DateTime& DateTime::operator=(const DateTime& dt)
85{
86 if (&dt != this)
87 *d = *dt.d;
88 return *this;
89}
90
91DateTime& DateTime::operator=(const KDateTime& dt)
92{
93 d->mDateTime = dt;
94 return *this;
95}
96
97bool DateTime::isNull() const
98{
99 return d->mDateTime.isNull();
100}
101
102bool DateTime::isValid() const
103{
104 return d->mDateTime.isValid();
105}
106
107bool DateTime::isDateOnly() const
108{
109 return d->mDateTime.isDateOnly();
110}
111
112void DateTime::setDateOnly(bool dateOnly)
113{
114 d->mDateTime.setDateOnly(dateOnly);
115}
116
117QDate DateTime::date() const
118{
119 return d->mDateTime.date();
120}
121
122void DateTime::setDate(const QDate& date)
123{
124 d->mDateTime.setDate(date);
125}
126
127QDateTime DateTime::rawDateTime() const
128{
129 return d->mDateTime.dateTime();
130}
131
132KDateTime DateTime::kDateTime() const
133{
134 return d->mDateTime;
135}
136
137QTime DateTime::effectiveTime() const
138{
139 return d->mDateTime.isDateOnly() ? d->mStartOfDay : d->mDateTime.time();
140}
141
142void DateTime::setTime(const QTime& t)
143{
144 d->mDateTime.setTime(t);
145}
146
147QDateTime DateTime::effectiveDateTime() const
148{
149 if (d->mDateTime.isDateOnly())
150 {
151 QDateTime dt = d->mDateTime.dateTime(); // preserve Qt::UTC or Qt::LocalTime
152 dt.setTime(d->mStartOfDay);
153 return dt;
154 }
155 return d->mDateTime.dateTime();
156}
157
158void DateTime::setDateTime(const QDateTime& dt)
159{
160 d->mDateTime.setDateTime(dt);
161}
162
163KDateTime DateTime::effectiveKDateTime() const
164{
165 if (d->mDateTime.isDateOnly())
166 {
167 KDateTime dt = d->mDateTime;
168 dt.setTime(d->mStartOfDay);
169 return dt;
170 }
171 return d->mDateTime;
172}
173
174KDateTime DateTime::calendarKDateTime() const
175{
176 if (d->mDateTime.isDateOnly())
177 {
178 KDateTime dt = d->mDateTime;
179 dt.setTime(QTime(0, 0));
180 return dt;
181 }
182 return d->mDateTime;
183}
184
185KTimeZone DateTime::timeZone() const
186{
187 return d->mDateTime.timeZone();
188}
189
190KDateTime::Spec DateTime::timeSpec() const
191{
192 return d->mDateTime.timeSpec();
193}
194
195void DateTime::setTimeSpec(const KDateTime::Spec &spec)
196{
197 d->mDateTime.setTimeSpec(spec);
198}
199
200KDateTime::SpecType DateTime::timeType() const
201{
202 return d->mDateTime.timeType();
203}
204
205bool DateTime::isLocalZone() const
206{
207 return d->mDateTime.isLocalZone();
208}
209
210bool DateTime::isClockTime() const
211{
212 return d->mDateTime.isClockTime();
213}
214
215bool DateTime::isUtc() const
216{
217 return d->mDateTime.isUtc();
218}
219
220bool DateTime::isOffsetFromUtc() const
221{
222 return d->mDateTime.isOffsetFromUtc();
223}
224
225int DateTime::utcOffset() const
226{
227 return d->mDateTime.utcOffset();
228}
229
230bool DateTime::isSecondOccurrence() const
231{
232 return d->mDateTime.isSecondOccurrence();
233}
234
235void DateTime::setSecondOccurrence(bool second)
236{
237 d->mDateTime.setSecondOccurrence(second);
238}
239
240DateTime DateTime::toUtc() const
241{
242 return DateTime(d->mDateTime.toUtc());
243}
244
245DateTime DateTime::toOffsetFromUtc() const
246{
247 return DateTime(d->mDateTime.toOffsetFromUtc());
248}
249
250DateTime DateTime::toOffsetFromUtc(int utcOffset) const
251{
252 return DateTime(d->mDateTime.toOffsetFromUtc(utcOffset));
253}
254
255DateTime DateTime::toLocalZone() const
256{
257 return DateTime(d->mDateTime.toLocalZone());
258}
259
260DateTime DateTime::toClockTime() const
261{
262 return DateTime(d->mDateTime.toClockTime());
263}
264
265DateTime DateTime::toZone(const KTimeZone& zone) const
266{
267 return DateTime(d->mDateTime.toZone(zone));
268}
269
270DateTime DateTime::toTimeSpec(const KDateTime::Spec &spec) const
271{
272 return DateTime(d->mDateTime.toTimeSpec(spec));
273}
274
275uint DateTime::toTime_t() const
276{
277 return d->mDateTime.toTime_t();
278}
279
280void DateTime::setTime_t(uint secs)
281{
282 d->mDateTime.setTime_t(secs);
283}
284
285DateTime DateTime::addSecs(qint64 n) const
286{
287 return DateTime(d->mDateTime.addSecs(n));
288}
289
290DateTime DateTime::addMins(qint64 n) const
291{
292 return DateTime(d->mDateTime.addSecs(n * 60));
293}
294
295DateTime DateTime::addDays(int n) const
296{
297 return DateTime(d->mDateTime.addDays(n));
298}
299
300DateTime DateTime::addMonths(int n) const
301{
302 return DateTime(d->mDateTime.addMonths(n));
303}
304
305DateTime DateTime::addYears(int n) const
306{
307 return DateTime(d->mDateTime.addYears(n));
308}
309
310int DateTime::daysTo(const DateTime& dt) const
311{
312 return d->mDateTime.daysTo(dt.d->mDateTime);
313}
314
315int DateTime::minsTo(const DateTime& dt) const
316{
317 return d->mDateTime.secsTo(dt.d->mDateTime) / 60;
318}
319
320int DateTime::secsTo(const DateTime& dt) const
321{
322 return d->mDateTime.secsTo(dt.d->mDateTime);
323}
324
325qint64 DateTime::secsTo_long(const DateTime& dt) const
326{
327 return d->mDateTime.secsTo_long(dt.d->mDateTime);
328}
329
330QString DateTime::toString(Qt::DateFormat f) const
331{
332 if (d->mDateTime.isDateOnly())
333 return d->mDateTime.date().toString(f);
334 else
335 return d->mDateTime.dateTime().toString(f);
336}
337
338QString DateTime::toString(const QString& format) const
339{
340 if (d->mDateTime.isDateOnly())
341 return d->mDateTime.date().toString(format);
342 else
343 return d->mDateTime.dateTime().toString(format);
344}
345
346QString DateTime::formatLocale(bool shortFormat) const
347{
348 return KGlobal::locale()->formatDateTime(d->mDateTime, (shortFormat ? KLocale::ShortDate : KLocale::LongDate));
349}
350
351void DateTime::setStartOfDay(const QTime& sod)
352{
353 Private::mStartOfDay = sod;
354}
355
356KDateTime::Comparison DateTime::compare(const DateTime &other) const
357{
358 return d->mDateTime.compare(other.d->mDateTime);
359}
360
361QTime DateTime::startOfDay()
362{
363 return Private::mStartOfDay;
364}
365
366bool operator==(const DateTime& dt1, const DateTime& dt2)
367{
368 return dt1.d->mDateTime == dt2.d->mDateTime;
369}
370
371bool operator==(const KDateTime& dt1, const DateTime& dt2)
372{
373 return dt1 == dt2.d->mDateTime;
374}
375
376bool operator<(const DateTime& dt1, const DateTime& dt2)
377{
378 if (dt1.d->mDateTime.isDateOnly() && !dt2.d->mDateTime.isDateOnly())
379 {
380 KDateTime dt = dt1.d->mDateTime.addDays(1);
381 dt.setTime(DateTime::Private::mStartOfDay);
382 return dt <= dt2.d->mDateTime;
383 }
384 if (!dt1.d->mDateTime.isDateOnly() && dt2.d->mDateTime.isDateOnly())
385 {
386 KDateTime dt = dt2.d->mDateTime;
387 dt.setTime(DateTime::Private::mStartOfDay);
388 return dt1.d->mDateTime < dt;
389 }
390 return dt1.d->mDateTime < dt2.d->mDateTime;
391}
392
393} // namespace KAlarmCal
394
395// vim: et sw=4:
KAlarmCal::DateTime
As KDateTime, but with a configurable start-of-day time for date-only values.
Definition datetime.h:43
KAlarmCal::DateTime::rawDateTime
QDateTime rawDateTime() const
Returns the date and time of the value.
Definition datetime.cpp:127
KAlarmCal::DateTime::addMins
DateTime addMins(qint64 n) const
Returns a DateTime value mins minutes later than the value of this object.
Definition datetime.cpp:290
KAlarmCal::DateTime::isOffsetFromUtc
bool isOffsetFromUtc() const
Returns whether the date/time is a local time at a fixed offset from UTC.
Definition datetime.cpp:220
KAlarmCal::DateTime::utcOffset
int utcOffset() const
Returns the UTC offset associated with the date/time.
Definition datetime.cpp:225
KAlarmCal::DateTime::kDateTime
KDateTime kDateTime() const
Returns the date and time of the value as a KDateTime.
Definition datetime.cpp:132
KAlarmCal::DateTime::toString
QString toString(Qt::DateFormat f=Qt::TextDate) const
Returns the value as a string.
Definition datetime.cpp:330
KAlarmCal::DateTime::toOffsetFromUtc
DateTime toOffsetFromUtc() const
Returns the time expressed as an offset from UTC, using the UTC offset associated with this instance'...
Definition datetime.cpp:245
KAlarmCal::DateTime::startOfDay
static QTime startOfDay()
Returns the start-of-day time.
Definition datetime.cpp:361
KAlarmCal::DateTime::setTime_t
void setTime_t(uint secs)
Sets the value to a specified date-time value.
Definition datetime.cpp:280
KAlarmCal::DateTime::setTime
void setTime(const QTime &t)
Sets the time component of the value.
Definition datetime.cpp:142
KAlarmCal::DateTime::isDateOnly
bool isDateOnly() const
Returns true if it is date-only value.
Definition datetime.cpp:107
KAlarmCal::DateTime::secsTo_long
qint64 secsTo_long(const DateTime &dt) const
Returns the number of seconds as a qint64 from this date or date-time to dt.
Definition datetime.cpp:325
KAlarmCal::DateTime::isValid
bool isValid() const
Returns true if the date is valid and, if it is a date-time value, the time is also valid.
Definition datetime.cpp:102
KAlarmCal::DateTime::setDateOnly
void setDateOnly(bool d)
Sets the value to be either date-only or date-time.
Definition datetime.cpp:112
KAlarmCal::DateTime::isSecondOccurrence
bool isSecondOccurrence() const
Returns whether the date/time is the second occurrence of this time.
Definition datetime.cpp:230
KAlarmCal::DateTime::isClockTime
bool isClockTime() const
Returns whether the date/time is a local clock time.
Definition datetime.cpp:210
KAlarmCal::DateTime::operator=
DateTime & operator=(const DateTime &dt)
Assignment operator.
Definition datetime.cpp:84
KAlarmCal::DateTime::setDateTime
void setDateTime(const QDateTime &dt)
Sets the date/time component of the value.
Definition datetime.cpp:158
KAlarmCal::DateTime::timeType
KDateTime::SpecType timeType() const
Returns the time specification type of the date/time, i.e.
Definition datetime.cpp:200
KAlarmCal::DateTime::isUtc
bool isUtc() const
Returns whether the date/time is a UTC time.
Definition datetime.cpp:215
KAlarmCal::DateTime::setTimeSpec
void setTimeSpec(const KDateTime::Spec &spec)
Changes the time specification of the value.
Definition datetime.cpp:195
KAlarmCal::DateTime::DateTime
DateTime()
Default constructor.
Definition datetime.cpp:49
KAlarmCal::DateTime::setDate
void setDate(const QDate &d)
Sets the date component of the value.
Definition datetime.cpp:122
KAlarmCal::DateTime::effectiveTime
QTime effectiveTime() const
Returns the time part of the value.
Definition datetime.cpp:137
KAlarmCal::DateTime::toTimeSpec
DateTime toTimeSpec(const KDateTime::Spec &spec) const
Returns the time converted to a new time specification.
Definition datetime.cpp:270
KAlarmCal::DateTime::setSecondOccurrence
void setSecondOccurrence(bool second)
Sets whether this is the second occurrence of this date/time.
Definition datetime.cpp:235
KAlarmCal::DateTime::formatLocale
QString formatLocale(bool shortFormat=true) const
Returns the value as a string, formatted according to the user's locale.
Definition datetime.cpp:346
KAlarmCal::DateTime::effectiveKDateTime
KDateTime effectiveKDateTime() const
Returns the date and time of the value.
Definition datetime.cpp:163
KAlarmCal::DateTime::addDays
DateTime addDays(int n) const
Returns a DateTime value n days later than the value of this object.
Definition datetime.cpp:295
KAlarmCal::DateTime::effectiveDateTime
QDateTime effectiveDateTime() const
Returns the date and time of the value.
Definition datetime.cpp:147
KAlarmCal::DateTime::calendarKDateTime
KDateTime calendarKDateTime() const
Returns the date and time of the value as written in the calendar.
Definition datetime.cpp:174
KAlarmCal::DateTime::secsTo
int secsTo(const DateTime &dt) const
Returns the number of seconds from this date or date-time to dt.
Definition datetime.cpp:320
KAlarmCal::DateTime::toZone
DateTime toZone(const KTimeZone &zone) const
Returns the time converted to a specified time zone.
Definition datetime.cpp:265
KAlarmCal::DateTime::addSecs
DateTime addSecs(qint64 n) const
Returns a DateTime value secs seconds later than the value of this object.
Definition datetime.cpp:285
KAlarmCal::DateTime::toClockTime
DateTime toClockTime() const
Returns the time converted to the local clock time.
Definition datetime.cpp:260
KAlarmCal::DateTime::setStartOfDay
static void setStartOfDay(const QTime &sod)
Sets the start-of-day time.
Definition datetime.cpp:351
KAlarmCal::DateTime::toTime_t
uint toTime_t() const
Converts the time to a UTC time, measured in seconds since 00:00:00 UTC 1st January 1970 (as returned...
Definition datetime.cpp:275
KAlarmCal::DateTime::toLocalZone
DateTime toLocalZone() const
Returns the time converted to the current local system time zone.
Definition datetime.cpp:255
KAlarmCal::DateTime::isLocalZone
bool isLocalZone() const
Returns whether the time zone for the date/time is the current local system time zone.
Definition datetime.cpp:205
KAlarmCal::DateTime::addYears
DateTime addYears(int n) const
Returns a DateTime value n years later than the value of this object.
Definition datetime.cpp:305
KAlarmCal::DateTime::daysTo
int daysTo(const DateTime &dt) const
Returns the number of days from this date or date-time to dt.
Definition datetime.cpp:310
KAlarmCal::DateTime::timeSpec
KDateTime::Spec timeSpec() const
Returns the time specification of the value.
Definition datetime.cpp:190
KAlarmCal::DateTime::isNull
bool isNull() const
Returns true if the date is null and, if it is a date-time value, the time is also null.
Definition datetime.cpp:97
KAlarmCal::DateTime::toUtc
DateTime toUtc() const
Returns the time converted to UTC.
Definition datetime.cpp:240
KAlarmCal::DateTime::timeZone
KTimeZone timeZone() const
Returns the time zone of the value.
Definition datetime.cpp:185
KAlarmCal::DateTime::date
QDate date() const
Returns the date part of the value.
Definition datetime.cpp:117
KAlarmCal::DateTime::addMonths
DateTime addMonths(int n) const
Returns a DateTime value n months later than the value of this object.
Definition datetime.cpp:300
KAlarmCal::DateTime::compare
KDateTime::Comparison compare(const DateTime &other) const
Compare this value with another.
Definition datetime.cpp:356
KAlarmCal::DateTime::minsTo
int minsTo(const DateTime &dt) const
Returns the number of minutes from this date or date-time to dt.
Definition datetime.cpp:315
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Wed Jan 24 2024 00:00:00 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KAlarm Library

Skip menu "KAlarm Library"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • Related Pages

kdepimlibs-4.14.10 API Reference

Skip menu "kdepimlibs-4.14.10 API Reference"
  • akonadi
  •   contact
  •   kmime
  •   socialutils
  • kabc
  • kalarmcal
  • kblog
  • kcal
  • kcalcore
  • kcalutils
  • kholidays
  • kimap
  • kioslave
  •   imap4
  •   mbox
  •   nntp
  • kldap
  • kmbox
  • kmime
  • kontactinterface
  • kpimidentities
  • kpimtextedit
  • kpimutils
  • kresources
  • ktnef
  • kxmlrpcclient
  • mailtransport
  • microblog
  • qgpgme
  • syndication
  •   atom
  •   rdf
  •   rss2
Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal