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

KAlarm Library

  • sources
  • kde-4.12
  • kdepimlibs
  • 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 
31 namespace KAlarmCal
32 {
33 
34 class 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 
47 QTime DateTime::Private::mStartOfDay;
48 
49 DateTime::DateTime()
50  : d(new Private)
51 {
52 }
53 
54 DateTime::DateTime(const QDate& d, const KDateTime::Spec& spec)
55  : d(new Private(d, spec))
56 {
57 }
58 
59 DateTime::DateTime(const QDate& d, const QTime& t, const KDateTime::Spec& spec)
60  : d(new Private(d, t, spec))
61 {
62 }
63 
64 DateTime::DateTime(const QDateTime& dt, const KDateTime::Spec& spec)
65  : d(new Private(dt, spec))
66 {
67 }
68 
69 DateTime::DateTime(const KDateTime& dt)
70  : d(new Private(dt))
71 {
72 }
73 
74 DateTime::DateTime(const DateTime& dt)
75  : d(new Private(*dt.d))
76 {
77 }
78 
79 DateTime::~DateTime()
80 {
81  delete d;
82 }
83 
84 DateTime& DateTime::operator=(const DateTime& dt)
85 {
86  if (&dt != this)
87  *d = *dt.d;
88  return *this;
89 }
90 
91 DateTime& DateTime::operator=(const KDateTime& dt)
92 {
93  d->mDateTime = dt;
94  return *this;
95 }
96 
97 bool DateTime::isNull() const
98 {
99  return d->mDateTime.isNull();
100 }
101 
102 bool DateTime::isValid() const
103 {
104  return d->mDateTime.isValid();
105 }
106 
107 bool DateTime::isDateOnly() const
108 {
109  return d->mDateTime.isDateOnly();
110 }
111 
112 void DateTime::setDateOnly(bool dateOnly)
113 {
114  d->mDateTime.setDateOnly(dateOnly);
115 }
116 
117 QDate DateTime::date() const
118 {
119  return d->mDateTime.date();
120 }
121 
122 void DateTime::setDate(const QDate& date)
123 {
124  d->mDateTime.setDate(date);
125 }
126 
127 QDateTime DateTime::rawDateTime() const
128 {
129  return d->mDateTime.dateTime();
130 }
131 
132 KDateTime DateTime::kDateTime() const
133 {
134  return d->mDateTime;
135 }
136 
137 QTime DateTime::effectiveTime() const
138 {
139  return d->mDateTime.isDateOnly() ? d->mStartOfDay : d->mDateTime.time();
140 }
141 
142 void DateTime::setTime(const QTime& t)
143 {
144  d->mDateTime.setTime(t);
145 }
146 
147 QDateTime 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 
158 void DateTime::setDateTime(const QDateTime& dt)
159 {
160  d->mDateTime.setDateTime(dt);
161 }
162 
163 KDateTime 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 
174 KDateTime 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 
185 KTimeZone DateTime::timeZone() const
186 {
187  return d->mDateTime.timeZone();
188 }
189 
190 KDateTime::Spec DateTime::timeSpec() const
191 {
192  return d->mDateTime.timeSpec();
193 }
194 
195 void DateTime::setTimeSpec(const KDateTime::Spec &spec)
196 {
197  d->mDateTime.setTimeSpec(spec);
198 }
199 
200 KDateTime::SpecType DateTime::timeType() const
201 {
202  return d->mDateTime.timeType();
203 }
204 
205 bool DateTime::isLocalZone() const
206 {
207  return d->mDateTime.isLocalZone();
208 }
209 
210 bool DateTime::isClockTime() const
211 {
212  return d->mDateTime.isClockTime();
213 }
214 
215 bool DateTime::isUtc() const
216 {
217  return d->mDateTime.isUtc();
218 }
219 
220 bool DateTime::isOffsetFromUtc() const
221 {
222  return d->mDateTime.isOffsetFromUtc();
223 }
224 
225 int DateTime::utcOffset() const
226 {
227  return d->mDateTime.utcOffset();
228 }
229 
230 bool DateTime::isSecondOccurrence() const
231 {
232  return d->mDateTime.isSecondOccurrence();
233 }
234 
235 void DateTime::setSecondOccurrence(bool second)
236 {
237  d->mDateTime.setSecondOccurrence(second);
238 }
239 
240 DateTime DateTime::toUtc() const
241 {
242  return DateTime(d->mDateTime.toUtc());
243 }
244 
245 DateTime DateTime::toOffsetFromUtc() const
246 {
247  return DateTime(d->mDateTime.toOffsetFromUtc());
248 }
249 
250 DateTime DateTime::toOffsetFromUtc(int utcOffset) const
251 {
252  return DateTime(d->mDateTime.toOffsetFromUtc(utcOffset));
253 }
254 
255 DateTime DateTime::toLocalZone() const
256 {
257  return DateTime(d->mDateTime.toLocalZone());
258 }
259 
260 DateTime DateTime::toClockTime() const
261 {
262  return DateTime(d->mDateTime.toClockTime());
263 }
264 
265 DateTime DateTime::toZone(const KTimeZone& zone) const
266 {
267  return DateTime(d->mDateTime.toZone(zone));
268 }
269 
270 DateTime DateTime::toTimeSpec(const KDateTime::Spec &spec) const
271 {
272  return DateTime(d->mDateTime.toTimeSpec(spec));
273 }
274 
275 uint DateTime::toTime_t() const
276 {
277  return d->mDateTime.toTime_t();
278 }
279 
280 void DateTime::setTime_t(uint secs)
281 {
282  d->mDateTime.setTime_t(secs);
283 }
284 
285 DateTime DateTime::addSecs(qint64 n) const
286 {
287  return DateTime(d->mDateTime.addSecs(n));
288 }
289 
290 DateTime DateTime::addMins(qint64 n) const
291 {
292  return DateTime(d->mDateTime.addSecs(n * 60));
293 }
294 
295 DateTime DateTime::addDays(int n) const
296 {
297  return DateTime(d->mDateTime.addDays(n));
298 }
299 
300 DateTime DateTime::addMonths(int n) const
301 {
302  return DateTime(d->mDateTime.addMonths(n));
303 }
304 
305 DateTime DateTime::addYears(int n) const
306 {
307  return DateTime(d->mDateTime.addYears(n));
308 }
309 
310 int DateTime::daysTo(const DateTime& dt) const
311 {
312  return d->mDateTime.daysTo(dt.d->mDateTime);
313 }
314 
315 int DateTime::minsTo(const DateTime& dt) const
316 {
317  return d->mDateTime.secsTo(dt.d->mDateTime) / 60;
318 }
319 
320 int DateTime::secsTo(const DateTime& dt) const
321 {
322  return d->mDateTime.secsTo(dt.d->mDateTime);
323 }
324 
325 qint64 DateTime::secsTo_long(const DateTime& dt) const
326 {
327  return d->mDateTime.secsTo_long(dt.d->mDateTime);
328 }
329 
330 QString 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 
338 QString 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 
346 QString DateTime::formatLocale(bool shortFormat) const
347 {
348  return KGlobal::locale()->formatDateTime(d->mDateTime, (shortFormat ? KLocale::ShortDate : KLocale::LongDate));
349 }
350 
351 void DateTime::setStartOfDay(const QTime& sod)
352 {
353  Private::mStartOfDay = sod;
354 }
355 
356 KDateTime::Comparison DateTime::compare(const DateTime &other) const
357 {
358  return d->mDateTime.compare(other.d->mDateTime);
359 }
360 
361 QTime DateTime::startOfDay()
362 {
363  return Private::mStartOfDay;
364 }
365 
366 bool operator==(const DateTime& dt1, const DateTime& dt2)
367 {
368  return dt1.d->mDateTime == dt2.d->mDateTime;
369 }
370 
371 bool operator==(const KDateTime& dt1, const DateTime& dt2)
372 {
373  return dt1 == dt2.d->mDateTime;
374 }
375 
376 bool 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::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::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::calendarKDateTime
KDateTime calendarKDateTime() const
Returns the date and time of the value as written in the calendar.
Definition: datetime.cpp:174
KAlarmCal::DateTime::compare
KDateTime::Comparison compare(const DateTime &other) const
Compare this value with another.
Definition: datetime.cpp:356
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::toTimeSpec
DateTime toTimeSpec(const KDateTime::Spec &spec) const
Returns the time converted to a new time specification.
Definition: datetime.cpp:270
KAlarmCal::DateTime::effectiveTime
QTime effectiveTime() const
Returns the time part of the value.
Definition: datetime.cpp:137
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::rawDateTime
QDateTime rawDateTime() const
Returns the date and time of the value.
Definition: datetime.cpp:127
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::setTimeSpec
void setTimeSpec(const KDateTime::Spec &spec)
Changes the time specification of the value.
Definition: datetime.cpp:195
KAlarmCal::DateTime::startOfDay
static QTime startOfDay()
Returns the start-of-day time.
Definition: datetime.cpp:361
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::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::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::setStartOfDay
static void setStartOfDay(const QTime &sod)
Sets the start-of-day time.
Definition: datetime.cpp:351
KAlarmCal::DateTime::timeZone
KTimeZone timeZone() const
Returns the time zone of the value.
Definition: datetime.cpp:185
KAlarmCal::DateTime::toClockTime
DateTime toClockTime() const
Returns the time converted to the local clock time.
Definition: datetime.cpp:260
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
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::toLocalZone
DateTime toLocalZone() const
Returns the time converted to the current local system time zone.
Definition: datetime.cpp:255
KAlarmCal::DateTime::isClockTime
bool isClockTime() const
Returns whether the date/time is a local clock time.
Definition: datetime.cpp:210
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::utcOffset
int utcOffset() const
Returns the UTC offset associated with the date/time.
Definition: datetime.cpp:225
KAlarmCal::DateTime::toZone
DateTime toZone(const KTimeZone &zone) const
Returns the time converted to a specified time zone.
Definition: datetime.cpp:265
KAlarmCal::DateTime::setDate
void setDate(const QDate &d)
Sets the date component of the value.
Definition: datetime.cpp:122
KAlarmCal::DateTime::toString
QString toString(Qt::DateFormat f=Qt::TextDate) const
Returns the value as a string.
Definition: datetime.cpp:330
KAlarmCal::DateTime::timeSpec
KDateTime::Spec timeSpec() const
Returns the time specification of the value.
Definition: datetime.cpp:190
KAlarmCal::DateTime::effectiveDateTime
QDateTime effectiveDateTime() const
Returns the date and time of the value.
Definition: datetime.cpp:147
KAlarmCal::DateTime::effectiveKDateTime
KDateTime effectiveKDateTime() const
Returns the date and time of the value.
Definition: datetime.cpp:163
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::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::operator=
DateTime & operator=(const DateTime &dt)
Assignment operator.
Definition: datetime.cpp:84
KAlarmCal::DateTime::date
QDate date() const
Returns the date part of the value.
Definition: datetime.cpp:117
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::setTime_t
void setTime_t(uint secs)
Sets the value to a specified date-time value.
Definition: datetime.cpp:280
KAlarmCal::DateTime::kDateTime
KDateTime kDateTime() const
Returns the date and time of the value as a KDateTime.
Definition: datetime.cpp:132
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::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::toUtc
DateTime toUtc() const
Returns the time converted to UTC.
Definition: datetime.cpp:240
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::isUtc
bool isUtc() const
Returns whether the date/time is a UTC time.
Definition: datetime.cpp:215
KAlarmCal::DateTime::timeType
KDateTime::SpecType timeType() const
Returns the time specification type of the date/time, i.e.
Definition: datetime.cpp:200
KAlarmCal::DateTime::setDateOnly
void setDateOnly(bool d)
Sets the value to be either date-only or date-time.
Definition: datetime.cpp:112
KAlarmCal::DateTime
As KDateTime, but with a configurable start-of-day time for date-only values.
Definition: datetime.h:42
KAlarmCal::DateTime::setDateTime
void setDateTime(const QDateTime &dt)
Sets the date/time component of the value.
Definition: datetime.cpp:158
KAlarmCal::DateTime::isSecondOccurrence
bool isSecondOccurrence() const
Returns whether the date/time is the second occurrence of this time.
Definition: datetime.cpp:230
KAlarmCal::DateTime::DateTime
DateTime()
Default constructor.
Definition: datetime.cpp:49
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:01:14 by doxygen 1.8.7 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 API Reference

Skip menu "kdepimlibs API Reference"
  • akonadi
  •   contact
  •   kmime
  •   socialutils
  • kabc
  • kalarmcal
  • kblog
  • kcal
  • kcalcore
  • kcalutils
  • kholidays
  • kimap
  • kldap
  • kmbox
  • kmime
  • kpimidentities
  • kpimtextedit
  • kresources
  • ktnef
  • kxmlrpcclient
  • microblog

Search



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