diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 (patch) | |
tree | 67208f7c145782a7e90b123b982ca78d88cc2c87 /konsolekalendar/konsolekalendarepoch.cpp | |
download | tdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.tar.gz tdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'konsolekalendar/konsolekalendarepoch.cpp')
-rw-r--r-- | konsolekalendar/konsolekalendarepoch.cpp | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/konsolekalendar/konsolekalendarepoch.cpp b/konsolekalendar/konsolekalendarepoch.cpp new file mode 100644 index 000000000..c070d2532 --- /dev/null +++ b/konsolekalendar/konsolekalendarepoch.cpp @@ -0,0 +1,176 @@ +/******************************************************************************* + * konsolekalendarepoch.cpp * + * * + * KonsoleKalendar is a command line interface to KDE calendars * + * Copyright (C) 2002-2004 Tuukka Pasanen <illuusio@mailcity.com> * + * Copyright (C) 2003-2005 Allen Winter <winter@kde.org> * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + * * + * As a special exception, permission is given to link this program * + * with any edition of Qt, and distribute the resulting executable, * + * without including the source code for Qt in the source distribution. * + * * + ******************************************************************************/ +/** + * @file konsolekalendarepoch.cpp + * Provides the KonsoleKalendarEpoch class definition. + * @author Tuukka Pasanen + * @author Allen Winter + */ +#include <stdlib.h> +#include <iostream> + +#include <qdatetime.h> +#include "konsolekalendarepoch.h" + +using namespace KCal; +using namespace std; + +KonsoleKalendarEpoch::KonsoleKalendarEpoch() +{ +} + +KonsoleKalendarEpoch::~KonsoleKalendarEpoch() +{ +} + +// By "epoch" we mean the number of seconds since 00:00:00 UTC on January 1 1970 + +// Function to convert an epoch value into a QDateTime +QDateTime KonsoleKalendarEpoch::epoch2QDateTime( uint epoch ) +{ + QDateTime dt; + dt.setTime_t( epoch, Qt::UTC ); + return( dt ); +} + +// Function to convert a QDateTime value into an epoch +uint KonsoleKalendarEpoch::QDateTime2epoch( QDateTime dt ) +{ + // THIS FUNCTION CAN BE OFF BY 1 HOUR DUE TO DAYLIGHT SAVINGS TIME. + // SORRY QT DOESN'T HANDLE DAYLIGHT SAVINGS TIME. + + // Compute #seconds to subtract for local timezone difference from UTC. + int offset = QDateTime::currentDateTime( Qt::UTC ).toTime_t() + - QDateTime::currentDateTime( Qt::LocalTime ).toTime_t(); + return( dt.toTime_t() - offset ); +} + +#if defined (TEST) +// Pass -DTEST to the compile command to create the test program, e.g: +// cc -DTEST -I/usr/local/KDE/include konsolekalendarepoch.cpp +// -L/usr/local/KDE/lib -lqt-mt -pthread +main() +{ + uint epoch; + QDateTime dt; + + cout << endl; + cout << "NOTE: Some tests may be off by 1 hour (3600 secs) " + << "due to daylight savings time" + << endl << endl; + + // Test1 + epoch = 0; + dt = KonsoleKalendarEpoch::epoch2QDateTime( epoch ); + cout << "TEST 1:" << endl; + cout << "epoch=" + << epoch + << " converts to " + << dt.toString( Qt::TextDate ) + << endl; + + epoch = KonsoleKalendarEpoch::QDateTime2epoch( dt ); + cout << "date=" + << dt.toString( Qt::TextDate ) + << " converts to " + << "epoch=" + << epoch + << endl; + + // Test2 + epoch = 100000; + dt = KonsoleKalendarEpoch::epoch2QDateTime( epoch ); + cout << "TEST 2:" << endl; + cout << "epoch=" + << epoch + << " converts to " + << dt.toString( Qt::TextDate ) + << endl; + + epoch = KonsoleKalendarEpoch::QDateTime2epoch( dt ); + cout << "date=" + << dt.toString( Qt::TextDate ) + << " converts to " + << "epoch=" + << epoch + << endl; + + // Test3 + epoch = 10000000; + dt = KonsoleKalendarEpoch::epoch2QDateTime( epoch ); + cout << "TEST 3:" << endl; + cout << "epoch=" + << epoch + << " converts to " + << dt.toString( Qt::TextDate ) + << endl; + + epoch = KonsoleKalendarEpoch::QDateTime2epoch( dt ); + cout << "date=" + << dt.toString( Qt::TextDate ) + << " converts to " + << "epoch=" + << epoch + << endl; + + // Test4 + epoch = 1000000000; + dt = KonsoleKalendarEpoch::epoch2QDateTime( epoch ); + cout << "TEST 4:" << endl; + cout << "epoch=" + << epoch + << " converts to " + << dt.toString( Qt::TextDate ) + << endl; + + epoch = KonsoleKalendarEpoch::QDateTime2epoch( dt ); + cout << "date=" + << dt.toString( Qt::TextDate ) + << " converts to " + << "epoch=" + << epoch + << endl; + + // Test5 + epoch = 10000000000; + dt = KonsoleKalendarEpoch::epoch2QDateTime( epoch ); + cout << "TEST 5:" << endl; + cout << "epoch=" + << epoch + << " converts to " + << dt.toString( Qt::TextDate ) + << endl; + + epoch = KonsoleKalendarEpoch::QDateTime2epoch( dt ); + cout << "date=" + << dt.toString( Qt::TextDate ) + << " converts to " + << "epoch=" + << epoch + << endl; +} +#endif |