/******************************************************************************* * 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 TQt, and distribute the resulting executable, * * without including the source code for TQt in the source distribution. * * * ******************************************************************************/ /** * @file konsolekalendarepoch.cpp * Provides the KonsoleKalendarEpoch class definition. * @author Tuukka Pasanen * @author Allen Winter */ #include <stdlib.h> #include <iostream> #include <tqdatetime.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 TQDateTime TQDateTime KonsoleKalendarEpoch::epoch2TQDateTime( uint epoch ) { TQDateTime dt; dt.setTime_t( epoch, Qt::UTC ); return( dt ); } // Function to convert a TQDateTime value into an epoch uint KonsoleKalendarEpoch::TQDateTime2epoch( TQDateTime 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 = TQDateTime::currentDateTime( Qt::UTC ).toTime_t() - TQDateTime::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; TQDateTime 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::epoch2TQDateTime( epoch ); cout << "TEST 1:" << endl; cout << "epoch=" << epoch << " converts to " << dt.toString( TQt::TextDate ) << endl; epoch = KonsoleKalendarEpoch::TQDateTime2epoch( dt ); cout << "date=" << dt.toString( TQt::TextDate ) << " converts to " << "epoch=" << epoch << endl; // Test2 epoch = 100000; dt = KonsoleKalendarEpoch::epoch2TQDateTime( epoch ); cout << "TEST 2:" << endl; cout << "epoch=" << epoch << " converts to " << dt.toString( TQt::TextDate ) << endl; epoch = KonsoleKalendarEpoch::TQDateTime2epoch( dt ); cout << "date=" << dt.toString( TQt::TextDate ) << " converts to " << "epoch=" << epoch << endl; // Test3 epoch = 10000000; dt = KonsoleKalendarEpoch::epoch2TQDateTime( epoch ); cout << "TEST 3:" << endl; cout << "epoch=" << epoch << " converts to " << dt.toString( TQt::TextDate ) << endl; epoch = KonsoleKalendarEpoch::TQDateTime2epoch( dt ); cout << "date=" << dt.toString( TQt::TextDate ) << " converts to " << "epoch=" << epoch << endl; // Test4 epoch = 1000000000; dt = KonsoleKalendarEpoch::epoch2TQDateTime( epoch ); cout << "TEST 4:" << endl; cout << "epoch=" << epoch << " converts to " << dt.toString( TQt::TextDate ) << endl; epoch = KonsoleKalendarEpoch::TQDateTime2epoch( dt ); cout << "date=" << dt.toString( TQt::TextDate ) << " converts to " << "epoch=" << epoch << endl; // Test5 epoch = 10000000000; dt = KonsoleKalendarEpoch::epoch2TQDateTime( epoch ); cout << "TEST 5:" << endl; cout << "epoch=" << epoch << " converts to " << dt.toString( TQt::TextDate ) << endl; epoch = KonsoleKalendarEpoch::TQDateTime2epoch( dt ); cout << "date=" << dt.toString( TQt::TextDate ) << " converts to " << "epoch=" << epoch << endl; } #endif