summaryrefslogtreecommitdiffstats
path: root/konsolekalendar/konsolekalendarepoch.cpp
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commit460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 (patch)
tree67208f7c145782a7e90b123b982ca78d88cc2c87 /konsolekalendar/konsolekalendarepoch.cpp
downloadtdepim-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.cpp176
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