#include "wx/utils.h"
#include "wx/intl.h"
-#include "wx/ioswrap.h"
-
-#if wxUSE_IOSTREAMH
- #include <iomanip.h>
-#else
- #include <iomanip>
+#if wxUSE_STD_IOSTREAM
+ #include "wx/ioswrap.h"
+ #if wxUSE_IOSTREAMH
+ #include <iomanip.h>
+ #else
+ #include <iomanip>
+ #endif
#endif
#include <string.h>
+#include <time.h>
-#if !USE_SHARED_LIBRARY
IMPLEMENT_DYNAMIC_CLASS(wxTime, wxObject)
+
+
+#ifndef WX_TIMEZONE
+ #define WX_TIMEZONE _timezone
#endif
+extern long wxGetUTCTime(void);
+bool wxGetTZandDST(long *timeZone, int *dstObserved)
+{
+ time_t now;
+ struct tm *tm;
+
+ now = time((time_t *) NULL);
+
+ if (now != (time_t)-1)
+ {
+ tm = localtime(&now);
+
+ if ((tm) && (tm->tm_isdst > 0))
+ *dstObserved = 1;
+ }
+ *timeZone = WX_TIMEZONE;
+
+ return TRUE;
+}
-extern bool wxGetLocalTime(long *timeZone, int *dstObserved);
-extern long wxGetCurrentTime(void);
static long TIME_ZONE; /* seconds west of GMT */
static int DST_OBSERVED; /* flags U.S. daylight saving time observed */
static bool wxTimeInitialized = FALSE;
wxTime::tFormat wxTime::Format = wxTime::wx12h;
-wxTime::tPrecision wxTime::Precision = wxTime::wxStdMinSec;
+wxTime::tPrecision wxTime::Precision = wxTime::wxStdMinSec;
static const unsigned long seconds_in_day = 24*60*60L;
static const wxDate refDate(1,1,1901);
{
if (!wxTimeInitialized)
{
- wxGetLocalTime(&TIME_ZONE, &DST_OBSERVED);
+ wxGetTZandDST(&TIME_ZONE, &DST_OBSERVED);
wxTimeInitialized = TRUE;
}
/*
{
if (!wxTimeInitialized)
{
- wxGetLocalTime(&TIME_ZONE, &DST_OBSERVED);
+ wxGetTZandDST(&TIME_ZONE, &DST_OBSERVED);
wxTimeInitialized = TRUE;
}
- sec = wxGetCurrentTime();
+ sec = wxGetUTCTime();
#ifdef __SALFORDC__
sec += (unsigned long) 2177452800; /* seconds from 1/1/01 to 1/1/70 */
#else
{
if (!wxTimeInitialized)
{
- wxGetLocalTime(&TIME_ZONE, &DST_OBSERVED);
+ wxGetTZandDST(&TIME_ZONE, &DST_OBSERVED);
wxTimeInitialized = TRUE;
}
{
if (!wxTimeInitialized)
{
- wxGetLocalTime(&TIME_ZONE, &DST_OBSERVED);
+ wxGetTZandDST(&TIME_ZONE, &DST_OBSERVED);
wxTimeInitialized = TRUE;
}
sec = GetLocalTime(date,h,m,s).sec-3600;
switch (Precision) {
case wxStdMinSec:
- wxSprintf(timeBuf,_T("%2d:%02d:%02d"),hh,GetMinute(),GetSecond());
+ wxSprintf(timeBuf,wxT("%2d:%02d:%02d"),hh,GetMinute(),GetSecond());
break;
case wxStdMin:
- wxSprintf(timeBuf,_T("%2d:%02d"),hh,GetMinute());
+ wxSprintf(timeBuf,wxT("%2d:%02d"),hh,GetMinute());
break;
}