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();
|