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) : QDateTime(date) { 00034 } 00035 00036 DateTime::DateTime(const QDate &date, const QTime &time) : QDateTime(date, time) { 00037 } 00038 00039 void DateTime::add(const Duration &duration) { 00040 if (isValid()) 00041 *this = addSecs(duration.seconds()); 00042 //kDebug()<<k_funcinfo<<"days,secs: "<<days<<","<<secs<<" gives: "<<toString()<<endl; 00043 } 00044 00045 void DateTime::subtract(const Duration &duration) { 00046 if (isValid()) 00047 *this = addSecs(-duration.seconds()); 00048 //kDebug()<<k_funcinfo<<"days,secs: "<<days<<","<<secs<<" gives: "<<toString()<<endl; 00049 } 00050 00051 Duration DateTime::duration(const DateTime &dt) const { 00052 Duration dur; 00053 if (isValid() && dt.isValid()) { 00054 if (dt < *this) { 00055 dur.addDays(dt.daysTo(*this)); 00056 dur.addSeconds(dt.time().secsTo(time())); 00057 } else { 00058 dur.addDays(daysTo(dt)); 00059 dur.addSeconds(time().secsTo(dt.time())); 00060 } 00061 } 00062 return dur; 00063 } 00064 00065 DateTime DateTime::operator+(const Duration &duration) const { 00066 DateTime d(*this); 00067 d.add(duration); 00068 return d; 00069 } 00070 00071 DateTime& DateTime::operator+=(const Duration &duration) { 00072 add(duration); 00073 return *this; 00074 } 00075 00076 DateTime DateTime::operator-(const Duration &duration) const { 00077 DateTime d(*this); 00078 d.subtract(duration); 00079 return d; 00080 } 00081 00082 DateTime& DateTime::operator-=(const Duration &duration) { 00083 subtract(duration); 00084 return *this; 00085 } 00086 00087 } //KPlato namespace