From: Christian P. <cp...@us...> - 2004-12-27 06:57:14
|
Update of /cvsroot/pclasses/pclasses2/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9296/src Modified Files: DateTime.cpp Log Message: Added time_t support Index: DateTime.cpp =================================================================== RCS file: /cvsroot/pclasses/pclasses2/src/DateTime.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- DateTime.cpp 27 Dec 2004 05:33:15 -0000 1.2 +++ DateTime.cpp 27 Dec 2004 06:57:05 -0000 1.3 @@ -18,7 +18,9 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ +#include "pclasses/pclasses-config.h" #include "pclasses/DateTime.h" +#include <time.h> namespace P { @@ -37,6 +39,12 @@ { } +DateTime::DateTime(time_t t) +: Date(1970, 1, 1), Time(0, 0, 0, 0) +{ + *this = fromTime_t(t); +} + DateTime::~DateTime() { } @@ -59,6 +67,12 @@ return *this; } +DateTime& DateTime::operator=(time_t t) +{ + *this = fromTime_t(t); + return *this; +} + bool DateTime::operator>(const DateTime& dt) const throw() { return (Date::operator>(dt) || (Date::operator==(dt) && Time::operator>(dt))); @@ -89,6 +103,22 @@ return (!operator==(dt)); } +DateTime DateTime::fromTime_t(time_t t) throw() +{ + struct tm* ltm; + +#ifdef PCLASSES_HAVE_LOCALTIME_R + struct tm ltm_r; + ltm = localtime_r(&t, <m_r); +#else + ltm = localtime(&t); +#endif + + return DateTime( + Date(ltm->tm_year + 1900, ltm->tm_mon + 1, ltm->tm_mday), + Time(ltm->tm_hour, ltm->tm_min, ltm->tm_sec)); +} + std::ostream& operator << (std::ostream& os, const DateTime& dt) { os << (Date&)dt << ' ' << (Time&)dt << ' ' << dt.timeZone(); |