|
From: Stephan <ste...@us...> - 2007-02-25 00:32:52
|
Update of /cvsroot/smartwin/SmartWin/SmartUtil In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv16848 Modified Files: DateTime.cpp DateTime.h Log Message: Add support for unix timestamp (t_time) Index: DateTime.h =================================================================== RCS file: /cvsroot/smartwin/SmartWin/SmartUtil/DateTime.h,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- DateTime.h 9 Sep 2006 15:37:32 -0000 1.10 +++ DateTime.h 25 Feb 2007 00:32:47 -0000 1.11 @@ -34,6 +34,7 @@ #include "UtilSystemHeaders.h" #include "TimeSpan.h" #include "tstring.h" +#include <time.h> /// Contains utility classes for helping out with different aspects in SmartWin and SmartSOAP namespace SmartUtil @@ -67,6 +68,9 @@ /// Constructs a date according to the values given DateTime( unsigned year, unsigned month, unsigned day, unsigned hour = 0, unsigned minute = 0, unsigned seconds = 0, unsigned milliseconds = 0 ); + /// Constructs a date according to a unix timestamp value + DateTime( time_t unixtimestamp ); + /// Copy constructor DateTime( const DateTime & rhs ); @@ -102,6 +106,9 @@ /** The format must be in format of e.g. "dd:MM-yyyy" or "yyyy:MM:dd" where "yyyy" is four digits year, "MM" is two digits months and "dd" is two digits day. */ tstring toDateString( const tstring & format ) const; + + /// Converts the date to a unix timestamp + time_t DateTime::toUnixTimestamp() const; }; // TODO: Comments.... Index: DateTime.cpp =================================================================== RCS file: /cvsroot/smartwin/SmartWin/SmartUtil/DateTime.cpp,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- DateTime.cpp 9 Sep 2006 15:37:31 -0000 1.8 +++ DateTime.cpp 25 Feb 2007 00:32:47 -0000 1.9 @@ -102,6 +102,19 @@ itsSysTime.wMilliseconds = ( WORD ) milliseconds; } +DateTime::DateTime( time_t unixtimestamp ) +{ + struct tm* t = localtime(&unixtimestamp); + + memset(&itsSysTime,0,sizeof(SYSTEMTIME)); + itsSysTime.wYear = t->tm_year + 1900; + itsSysTime.wMonth = t->tm_mon + 1; + itsSysTime.wDay = t->tm_mday; + itsSysTime.wHour = t->tm_hour; + itsSysTime.wMinute = t->tm_min; + itsSysTime.wSecond = t->tm_sec; +} + DateTime::DateTime( const DateTime & rhs ) : itsSysTime( rhs.itsSysTime ) {} @@ -174,6 +187,21 @@ return tmp; } +time_t DateTime::toUnixTimestamp() const +{ + struct tm tm; + memset(&tm, 0, sizeof(tm)); + + tm.tm_year = itsSysTime.wYear - 1900; + tm.tm_mon = itsSysTime.wMonth - 1; + tm.tm_mday = itsSysTime.wDay; + tm.tm_hour = itsSysTime.wHour; + tm.tm_min = itsSysTime.wMinute; + tm.tm_sec = itsSysTime.wSecond; + + return mktime(&tm); +} + DateTime operator +( const DateTime & date, const TimeSpan & time ) { FILETIME file; |