kplato

kptdatetime.cc

00001 /* This file is part of the KDE project
00002    Copyright (C) 2003 Dag Andersen <danders@get2net.dk>
00003 
00004    This library is free software; you can redistribute it and/or
00005    modify it under the terms of the GNU Library General Public
00006    License as published by the Free Software Foundation; either
00007    version 2 of the License, or (at your option) any later version.
00008 
00009    This library is distributed in the hope that it will be useful,
00010    but WITHOUT ANY WARRANTY; without even the implied warranty of
00011    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012    Library General Public License for more details.
00013 
00014    You should have received a copy of the GNU Library General Public License
00015    along with this library; see the file COPYING.LIB.  If not, write to
00016    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00017  * Boston, MA 02110-1301, USA.
00018 */
00019 
00020 #include "kptdatetime.h"
00021 
00022 #include <kdebug.h>
00023 
00024 namespace KPlato
00025 {
00026 
00027 DateTime::DateTime() : QDateTime() {
00028 }
00029 
00030 DateTime::DateTime(const QDateTime &dt) : QDateTime(dt.date(), dt.time()) {
00031 }
00032 
00033 DateTime::DateTime(const QDate &date, const QTime &time) : QDateTime(date, time) {
00034 }
00035 
00036 void DateTime::add(const Duration &duration) {
00037     if (isValid())
00038         *this = addSecs(duration.seconds());
00039     //kdDebug()<<k_funcinfo<<"days,secs: "<<days<<","<<secs<<" gives: "<<toString()<<endl;
00040 }
00041 
00042 void DateTime::subtract(const Duration &duration) {
00043     if (isValid())
00044         *this = addSecs(-duration.seconds());
00045     //kdDebug()<<k_funcinfo<<"days,secs: "<<days<<","<<secs<<" gives: "<<toString()<<endl;
00046 }
00047 
00048 Duration DateTime::duration(const DateTime &dt) const {
00049     Duration dur;
00050     if (isValid() && dt.isValid()) {
00051         if (dt < *this) {
00052             dur.addDays(dt.daysTo(*this));
00053             dur.addSeconds(dt.time().secsTo(time()));
00054         } else {
00055             dur.addDays(daysTo(dt));
00056             dur.addSeconds(time().secsTo(dt.time()));
00057         }
00058     }
00059     return dur;
00060 }
00061 
00062 DateTime DateTime::operator+(const Duration &duration) const {
00063     DateTime d(*this);
00064     d.add(duration);
00065     return d;
00066 }
00067 
00068 DateTime& DateTime::operator+=(const Duration &duration) {
00069     add(duration);
00070     return *this;
00071 }
00072 
00073 DateTime DateTime::operator-(const Duration &duration) const {
00074     DateTime d(*this);
00075     d.subtract(duration);
00076     return d;
00077 }
00078 
00079 DateTime& DateTime::operator-=(const Duration &duration) {
00080     subtract(duration);
00081     return *this;
00082 }
00083 
00084 }  //KPlato namespace
KDE Home | KDE Accessibility Home | Description of Access Keys