+++ /dev/null
-/////////////////////////////////////////////////////////////////////////////
-// Name: date.cpp
-// Purpose: wxDate class
-// Author:
-// Originally inspired by Steve Marcus (CIS 72007,1233) 6/16/91
-// Enhanced by Eric Simon (CIS 70540,1522) 6/29/91
-// Further Enhanced by Chris Hill (CIS 72030,2606) 7/11/91
-// Still Further Enhanced by Hill & Simon v3.10 8/05/91
-// Version 4 by Charles D. Price 6/27/92
-// Integrated into wxWindows by Julian Smart 9th July 1995
-// Modified by:
-// Created: 01/02/97
-// RCS-ID: $Id$
-// Copyright: (c) Julian Smart and Markus Holzem
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#ifdef __GNUG__
-#pragma implementation "date.h"
-#endif
-
-// For compilers that support precompilation, includes "wx.h".
-#include "wx/wxprec.h"
-
-#ifdef __BORLANDC__
- #pragma hdrstop
-#endif
-
-#if wxUSE_TIMEDATE
-
-#include "wx/date.h"
-#include "wx/intl.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "wx/ioswrap.h"
-
-#include <time.h>
-#include <string.h>
-
-#define ABBR_LENGTH 3
-
-static const wxChar *dayname[] = {
- wxT("Sunday"), wxT("Monday"), wxT("Tuesday"), wxT("Wednesday"),
- wxT("Thursday"), wxT("Friday"), wxT("Saturday")
-};
-
-static const wxChar *mname[] = {
- wxT("January"), wxT("February"), wxT("March"), wxT("April"), wxT("May"), wxT("June"),
- wxT("July"), wxT("August"), wxT("September"), wxT("October"), wxT("November"), wxT("December")
-};
-
-static int GauDays[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
-
-IMPLEMENT_DYNAMIC_CLASS(wxDate, wxObject)
-
- ////////////////////////////////////////////////////////////
- // Constructors
- ////////////////////////////////////////////////////////////
-
-wxDate::wxDate()
-{
- DisplayFormat=wxMDY;
- DisplayOptions='\0';
- month = day = year = day_of_week = 0;
- julian = 0;
-}
-
-wxDate::wxDate (long j) : julian(j)
-{
- DisplayFormat=wxMDY;
- DisplayOptions='\0';
- julian_to_mdy ();
-}
-
-wxDate::wxDate (int m, int d, int y) : month(m), day(d), year(y)
-{
- DisplayFormat=wxMDY;
- DisplayOptions='\0';
- mdy_to_julian ();
-}
-
-wxDate::wxDate (const wxString& dat)
-{
- DisplayFormat=wxMDY;
- DisplayOptions='\0';
- if (wxStrcmp(dat, wxT("TODAY")) == 0 || wxStrcmp(dat, wxT("today")) == 0)
- {
- // Sets the current date
- Set();
- }
- else
- {
- wxChar buf[100];
- wxStrcpy(buf, dat);
-
- wxChar *save_ptr, *token = wxStrtok(buf,wxT("/-"),&save_ptr);
- month = wxAtoi(token);
- day = wxAtoi(wxStrtok((wxChar *) NULL,wxT("/-"),&save_ptr));
- year = wxAtoi(wxStrtok((wxChar *) NULL,wxT(" "),&save_ptr));
- }
-
- mdy_to_julian ();
-}
-
-wxDate::wxDate (const wxDate &dt)
-{
- DisplayFormat=dt.DisplayFormat;
- DisplayOptions=dt.DisplayOptions;
- month = dt.month;
- day = dt.day;
- year = dt.year;
- mdy_to_julian ();
-}
-
-void wxDate::operator = (const wxDate &dt)
-{
- DisplayFormat=dt.DisplayFormat;
- DisplayOptions=dt.DisplayOptions;
- month = dt.month;
- day = dt.day;
- year = dt.year;
- mdy_to_julian (); // wxUSE_TIMEDATE
-}
-
-void wxDate::operator = (const wxString& dat)
-{
- DisplayFormat=wxMDY;
- DisplayOptions='\0';
- if (wxStrcmp(dat, wxT("TODAY")) == 0 || wxStrcmp(dat, wxT("today")) == 0)
- {
- // Sets the current date
- Set();
- }
- else
- {
- wxChar buf[100];
- wxStrcpy(buf, dat);
-
- wxChar *save_ptr, *token = wxStrtok(buf,wxT("/-"),&save_ptr);
- month = wxAtoi(token);
- day = wxAtoi(wxStrtok((wxChar *) NULL,wxT("/-"),&save_ptr));
- year = wxAtoi(wxStrtok((wxChar *) NULL,wxT(" "),&save_ptr));
- }
-
- mdy_to_julian ();
-}
-
-//////////////////////////////////////////////////////////////
-// Conversion operations
-//////////////////////////////////////////////////////////////
-
-#ifndef __SALFORDC__
-wxDate::operator wxString( void )
-{
- return FormatDate();
-}
-#endif
-
-//////////////////////////////////////////////////////////////
-// Date Arithmetic
-//////////////////////////////////////////////////////////////
-
-wxDate wxDate::operator + (long i)
-{
- wxDate dp(julian + i);
- return dp;
-}
-
-wxDate wxDate::operator + (int i)
-{
- wxDate dp(julian + (long)i);
- return dp;
-}
-
-wxDate wxDate::operator - (long i)
-{
- wxDate dp(julian - i);
- return dp;
-}
-
-wxDate wxDate::operator - (int i)
-{
- wxDate dp(julian - (long)i);
- return dp;
-}
-
-long wxDate::operator - (const wxDate &dt)
-{
- return ( julian - dt.julian );
-}
-
-wxDate &wxDate::operator += (long i)
-{
- julian += i;
- julian_to_mdy();
- return *this;
-}
-
-wxDate &wxDate::operator -= (long i)
-{
- julian -= i;
- julian_to_mdy();
- return *this;
-}
-
-wxDate &wxDate::operator ++()
-{
- julian++;
- julian_to_mdy();
- return *this;
-}
-
-wxDate &wxDate::operator ++(int)
-{
- julian++;
- julian_to_mdy();
- return *this;
-}
-
-wxDate &wxDate::operator --()
-{
- julian--;
- julian_to_mdy();
- return *this;
-}
-
-wxDate &wxDate::operator --(int)
-{
- julian--;
- julian_to_mdy();
- return *this;
-}
-
-//////////////////////////////////////////////////////////////
-// Date comparison
-//////////////////////////////////////////////////////////////
-
-bool WXDLLEXPORT operator < (const wxDate &dt1, const wxDate &dt2)
-{
- return ( dt1.julian < dt2.julian );
-}
-
-bool WXDLLEXPORT operator <= (const wxDate &dt1, const wxDate &dt2)
-{
- return ( (dt1.julian == dt2.julian) || (dt1.julian < dt2.julian) );
-}
-
-bool WXDLLEXPORT operator > (const wxDate &dt1, const wxDate &dt2)
-{
- return ( dt1.julian > dt2.julian );
-}
-
-bool WXDLLEXPORT operator >= (const wxDate &dt1, const wxDate &dt2)
-{
- return ( (dt1.julian == dt2.julian) || (dt1.julian > dt2.julian) );
-}
-
-bool WXDLLEXPORT operator == (const wxDate &dt1, const wxDate &dt2)
-{
- return ( dt1.julian == dt2.julian );
-}
-
-bool WXDLLEXPORT operator != (const wxDate &dt1, const wxDate &dt2)
-{
- return ( dt1.julian != dt2.julian );
-}
-
-
-#if wxUSE_STD_IOSTREAM
-
-////////////////////////////////////////////////////////////////
-// Ostream operations
-////////////////////////////////////////////////////////////////
-
-ostream WXDLLEXPORT & operator << (ostream &os, const wxDate &dt)
-{
- return os << dt.FormatDate().mb_str();
-}
-
-#endif
-
-//////////////////////////////////////////////////////////////
-// Conversion routines
-//////////////////////////////////////////////////////////////
-
-void wxDate::julian_to_wday (void)
-{
- // Correction by Peter Stadel <peters@jetcity.com>
- day_of_week = (int)((julian - 2) % 7L);
-/*
- day_of_week = (int) ((julian + 2) % 7 + 1);
-*/
-}
-
-void wxDate::julian_to_mdy ()
-{
- long a,b,c,d,e,z,alpha;
- z = julian+1;
- // dealing with Gregorian calendar reform
- if (z < 2299161L)
- a = z;
- else {
- alpha = (long) ((z-1867216.25) / 36524.25);
- a = z + 1 + alpha - alpha/4;
- }
- b = ( a > 1721423 ? a + 1524 : a + 1158 );
- c = (long) ((b - 122.1) / 365.25);
- d = (long) (365.25 * c);
- e = (long) ((b - d) / 30.6001);
- day = (int)(b - d - (long)(30.6001 * e));
- month = (int)((e < 13.5) ? e - 1 : e - 13);
- year = (int)((month > 2.5 ) ? (c - 4716) : c - 4715);
- julian_to_wday ();
-}
-
-void wxDate::mdy_to_julian (void)
-{
- int a,b=0;
- int work_month=month, work_day=day, work_year=year;
- // correct for negative year
- if (work_year < 0)
- work_year++;
- if (work_month <= 2)
- { work_year--; work_month +=12; }
-
- // deal with Gregorian calendar
- if (work_year*10000. + work_month*100. + work_day >= 15821015.)
- {
- a = (int)(work_year/100.);
- b = 2 - a + a/4;
- }
- julian = (long) (365.25*work_year) +
- (long) (30.6001 * (work_month+1)) + work_day + 1720994L + b;
- julian_to_wday ();
-}
-
-////////////////////////////////////////////////////////////////
-// Format routine
-////////////////////////////////////////////////////////////////
-
-wxString wxDate::FormatDate (int type) const
-{
- int actualType = type;
- if (actualType == -1)
- actualType = DisplayFormat;
-
- wxChar buf[40];
-
- memset( buf, '\0', sizeof(buf) );
- switch ( actualType )
- {
- case wxDAY:
- if ( (day_of_week < 1) || (day_of_week > 7) )
- wxStrcpy(buf, _("invalid day"));
- else
- wxStrncpy( buf, wxGetTranslation(dayname[day_of_week-1]),
- (DisplayOptions & wxDATE_ABBR) ? ABBR_LENGTH : 9);
- return wxString(buf);
-
- case wxMONTH:
- if ( (month < 1) || (month > 12) )
- wxStrcpy(buf, _("invalid month"));
- else
- wxStrncpy( buf, wxGetTranslation(mname[month-1]),
- (DisplayOptions & wxDATE_ABBR) ? ABBR_LENGTH : 9);
- return wxString(buf);
-
- case wxFULL:
- if ( (month < 1) || (month > 12) || (day_of_week < 0) ||
- (day_of_week > 7) )
- {
- wxStrcpy(buf, _("invalid date"));
- return wxString(buf);
- }
- wxStrncpy( buf, wxGetTranslation(dayname[day_of_week-1]),
- (DisplayOptions & wxDATE_ABBR) ? ABBR_LENGTH : 9);
- wxStrcat( buf, wxT(", "));
- wxStrncat( buf, wxGetTranslation(mname[month-1]),
- (DisplayOptions & wxDATE_ABBR) ? ABBR_LENGTH : 9);
- wxStrcat( buf, wxT(" "));
- wxSprintf( buf+wxStrlen(buf), wxT("%d, %d"), day, abs(year) );
- if (year < 0)
- wxStrcat(buf,_(" B.C."));
- return wxString(buf);
-
- case wxEUROPEAN:
- if ( (month < 1) || (month > 12) || (day_of_week < 0) ||
- (day_of_week > 7) )
- {
- wxStrcpy(buf, _("invalid date"));
- return wxString(buf);
- }
- wxSprintf(buf,wxT("%d "), day);
- wxStrncat(buf, wxGetTranslation(mname[month-1]),
- (DisplayOptions & wxDATE_ABBR) ? ABBR_LENGTH : 9);
- wxSprintf( buf+wxStrlen(buf), wxT(" %d"), abs(year) );
- if (year < 0)
- wxStrcat(buf, _(" B.C."));
- return wxString(buf);
-
- case wxMDY:
- default:
- if (day==0 || month==0 || year==0)
- wxStrcpy(buf, _("invalid date"));
- else
- wxSprintf( buf+wxStrlen(buf), wxT("%1d/%1d/%02d"), month, day,
- (DisplayOptions & wxNO_CENTURY) && (abs(year) > 1899)
- ? (abs(year) - (abs(year) / 100 * 100))
- : (abs(year)) );
- return wxString(buf);
- }
-}
-
-void wxDate::SetFormat( int format )
-{
- DisplayFormat = format;
-}
-
-int wxDate::SetOption( int option, bool action )
-{
- switch ( option )
- {
- case wxNO_CENTURY:
- if ( action )
- DisplayOptions |= wxNO_CENTURY;
- else
- {
- DisplayOptions &= (~wxNO_CENTURY);
- }
- return 1;
- case wxDATE_ABBR:
- if ( action )
- DisplayOptions |= wxDATE_ABBR;
- else
- {
- DisplayOptions &= (~wxDATE_ABBR);
- }
- return 1;
- default:
- return 0;
- }
-}
-
-///////////////////////////////////////////////////////////////
-// Miscellaneous Routines
-///////////////////////////////////////////////////////////////
-
-long wxDate::GetJulianDate( void ) const
-{
- return julian;
-}
-
-int wxDate::GetDayOfYear( void ) const
-{
- wxDate temp( 1, 1, year );
-
- return (int) (julian - temp.julian + 1);
-}
-
-
-bool wxDate::IsLeapYear( void ) const
-{
- return ( (year >= 1582) ?
- (year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ):
- (year % 4 == 0) );
-}
-
-// Version 4.0 Extension to Public Interface - CDP
-
-wxDate& wxDate::Set()
-{
- //#ifdef __WXMSW__
-#if 0
- struct _dosdate_t sDate;
- _dos_getdate(&sDate);
-
- month = sDate.month;
- day = sDate.day;
- year = sDate.year;
-
- mdy_to_julian();
-#else
- time_t now = time((time_t *) NULL);
- struct tm *localTime = localtime(&now);
-
- month = localTime->tm_mon + 1;
- day = localTime->tm_mday;
- year = localTime->tm_year + 1900;
-
- mdy_to_julian ();
-#endif
- return *this;
-}
-
-wxDate& wxDate::Set(
- int nMonth,
- int nDay,
- int nYear)
-{
- month = nMonth;
- year = nYear < 0 ? 9999 : nYear;
- year = nYear > 9999 ? 0 : nYear;
- day = nDay < GetDaysInMonth() ? nDay : GetDaysInMonth();
-
- mdy_to_julian();
- return *this;
-}
-
-wxDate &
-wxDate::Set(long j)
-{
- julian = j;
-
- julian_to_mdy();
- return *this;
-}
-
-
-int wxDate::GetDaysInMonth()
-{
- return GauDays[month-1] + (month==2 && IsLeapYear());
-}
-
-int wxDate::GetFirstDayOfMonth() const
-{
- return wxDate(month, 1, year).GetDayOfWeek();
-}
-
-int wxDate::GetDay() const
-{
- return day;
-}
-
-int wxDate::GetDayOfWeek() const
-{
- return day_of_week;
-}
-
-int wxDate::GetYear() const
-{
- return year;
-}
-
-int wxDate::GetMonth() const
-{
- return month;
-}
-
-wxDate& wxDate::AddWeeks(int nCount)
-{
- Set(julian + (long)nCount*7);
- return *this;
-}
-
-wxDate& wxDate::AddMonths(int nCount)
-{
- month += nCount;
-
- if (month < 1) {
- month = 12;
- year--;
- }
-
- if (month > 12) {
- month = 1;
- year++;
- }
- mdy_to_julian();
- return *this;
-}
-
-wxDate& wxDate::AddYears(int nCount)
-{
- year += nCount;
- mdy_to_julian();
- return *this;
-}
-
-int wxDate::GetWeekOfMonth()
-{
- // Abs day includes the days from previous month that fills up
- // the begin. of the week.
- int nAbsDay = day + GetFirstDayOfMonth()-1;
- return (nAbsDay-GetDayOfWeek())/7 + 1;
-}
-
-int wxDate::GetWeekOfYear()
-{
- wxDate doTemp(1, 1, year);
- return (int)(((julian - doTemp.julian+1)/7) + 1);
-}
-
-wxDate wxDate::GetMonthStart()
-{
- return(wxDate(month, 1, year));
-}
-
-wxDate wxDate::GetMonthEnd()
-{
- return(wxDate(month+1, 1, year)-1);
-}
-
-wxDate wxDate::GetYearStart()
-{
- return(wxDate(1, 1, year));
-}
-
-wxDate wxDate::GetYearEnd()
-{
- return(wxDate(1, 1, year+1)-1);
-}
-
-wxString wxDate::GetMonthName()
-{
- return(FormatDate(wxMONTH));
-}
-
-wxString wxDate::GetDayOfWeekName()
-{
- return(FormatDate(wxDAY));
-}
-
-bool wxDate::IsBetween(const wxDate& first, const wxDate& second) const
-{
- return (julian >= first.julian && julian <= second.julian);
-}
-
-// This function is from NIHCL
-wxDate wxDate::Previous(int dayOfWeek) const
-{
- int this_day_Of_Week, desired_day_Of_Week;
- long j;
-
- // Set the desired and current day of week to start at 0 (Monday)
- // and end at 6 (Sunday).
-
- desired_day_Of_Week = dayOfWeek - 1; // These functions return a value
- this_day_Of_Week = GetDayOfWeek() - 1; // from 1-7. Subtract 1 for 0-6.
- j = julian;
-
- // Have to determine how many days difference from current day back to
- // desired, if any. Special calculation under the 'if' statement to
- // effect the wraparound counting from Monday (0) back to Sunday (6).
-
- if (desired_day_Of_Week > this_day_Of_Week)
- this_day_Of_Week += 7 - desired_day_Of_Week;
- else
- this_day_Of_Week -= desired_day_Of_Week;
- j -= this_day_Of_Week; // Adjust j to set it at the desired day of week.
- return wxDate(j);
-}
-
-#endif
+++ /dev/null
-/////////////////////////////////////////////////////////////////////////////
-// Name: time.cpp
-// Purpose: wxTime class, from NIHCL
-// Author: Julian Smart, after K. E. Gorlen
-// Modified by:
-// Created: 04/01/98
-// RCS-ID: $Id$
-// Copyright: (c) Julian Smart and Markus Holzem
-// Licence: wxWindows license
-/////////////////////////////////////////////////////////////////////////////
-
-#ifdef __GNUG__
-#pragma implementation "time.h"
-#endif
-
-/*
-Provides an object that represents a Time, stored as the number of
-seconds since January 1, 1901, GMT.
-*/
-
-// For compilers that support precompilation, includes "wx.h".
-#include "wx/wxprec.h"
-
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-
-#include "wx/setup.h"
-
-#if wxUSE_TIMEDATE
-
-#include "wx/time.h"
-#include "wx/date.h"
-#include "wx/utils.h"
-#include "wx/intl.h"
-
-#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>
-
-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;
-}
-
-
-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;
-
-static const unsigned long seconds_in_day = 24*60*60L;
-static const wxDate refDate(1,1,1901);
-// static const wxDate maxDate(49709L); /* ((2**32)-1)/seconds_in_day -1 */
-
-wxTime wxTime::GetLocalTime(const wxDate& date, hourTy h, minuteTy m, secondTy s)
-/*
- Return a local wxTime for the specified Standard Time date, hour, minute,
- and second.
-*/
-{
- if (!wxTimeInitialized)
- {
- wxGetTZandDST(&TIME_ZONE, &DST_OBSERVED);
- wxTimeInitialized = TRUE;
- }
-/*
- if (!date.IsBetween(refDate,maxDate))
- setError(NIHCL_DATERANGE,DEFAULT,
- date.dayOfMonth(),date.nameOfMonth(),date.year());
-*/
- // The following line causes an error in GCC 2.1
-// long daysBetween = date-refDate;
- // ... but this seems to get round it.
- wxDate tmp1(date);
- wxDate tmp2(refDate);
- long daysBetween = tmp1 - tmp2;
-
- return wxTime(seconds_in_day*daysBetween + 60*60L*h + 60*m + s);
-}
-
-wxTime::wxTime()
-/*
- Construct a wxTime for this instant.
-*/
-{
- if (!wxTimeInitialized)
- {
- wxGetTZandDST(&TIME_ZONE, &DST_OBSERVED);
- wxTimeInitialized = TRUE;
- }
- sec = wxGetUTCTime();
-#ifdef __SALFORDC__
- sec += (unsigned long) 2177452800; /* seconds from 1/1/01 to 1/1/70 */
-#else
- sec += 2177452800UL; /* seconds from 1/1/01 to 1/1/70 */
-#endif
-}
-
-wxTime::wxTime(hourTy h, minuteTy m, secondTy s, bool dst)
-/*
- Construct a wxTime for today at the specified (local) hour, minute, and
- second.
-*/
-{
- if (!wxTimeInitialized)
- {
- wxGetTZandDST(&TIME_ZONE, &DST_OBSERVED);
- wxTimeInitialized = TRUE;
- }
-
- sec = wxTime(wxDate(),h,m,s,dst).sec;
-}
-
-
-wxTime::wxTime(const wxDate& date, hourTy h, minuteTy m, secondTy s, bool dst)
-/*
- Construct a wxTime for the specified (local) Date, hour, minute, and
- second.
-*/
-{
- if (!wxTimeInitialized)
- {
- wxGetTZandDST(&TIME_ZONE, &DST_OBSERVED);
- wxTimeInitialized = TRUE;
- }
- sec = GetLocalTime(date,h,m,s).sec-3600;
- if (IsDST())
- {
- sec += 3600;
- if (IsDST() || dst) sec -= 3600;
- }
- else
- {
- sec += 3600;
-/*
- if (IsDST()) setError(NIHCL_BADTIME,DEFAULT,
- date.dayOfMonth(),date.nameOfMonth(),date.year(),
- h,m,s,(dst?_("DST"):""));
-*/
- }
- sec += TIME_ZONE; // adjust to GMT
-}
-
-#ifndef __SALFORDC__
-wxTime::operator wxDate() const
-/*
- Convert a wxTime to a local wxDate
-*/
-{
-// return wxDate((int)(GetLocalTime().sec/seconds_in_day)); 4.2 cc bug
- long daycount = (long)(GetLocalTime().sec/seconds_in_day);
-
- wxDate date(1,1,1901);
- date += daycount;
- return date;
-}
-#endif
-
-bool wxTime::IsBetween(const wxTime& a, const wxTime& b) const
-{
- return *this >= a && *this <= b;
-}
-
-hourTy wxTime::GetHour() const
-/*
- Return the hour of this wxTime in local time; i.e., adjust for
- time zone and Daylight Savings Time.
-*/
-{
- return GetLocalTime().GetHourGMT();
-}
-
-hourTy wxTime::GetHourGMT() const
-/*
- Return the hour of this Time in GMT.
-*/
-{
- return (hourTy)((sec % 86400) / 3600);
-}
-
-wxTime wxTime::GetBeginDST(unsigned year)
-/*
- Return the local Standard Time at which Daylight Savings Time
- begins in the specified year.
-*/
-{
- // Previous Sunday
- wxTime DSTtime(GetLocalTime(wxDate(3,31,year).Previous(1)+7,2));
- if (year<=1986) {
- // Previous Sunday
- DSTtime = GetLocalTime(wxDate(4,30,year).Previous(1),2);
- if (year==1974) DSTtime = GetLocalTime(wxDate(1,6,1974),2);
- if (year==1975) DSTtime = GetLocalTime(wxDate(2,23,1975),2);
- }
- return DSTtime;
-}
-
-wxTime wxTime::GetEndDST(unsigned year)
-/*
- Return the local Standard Time at which Daylight Savings Time
- ends in the specified year.
-*/
-{
- wxTime STDtime(GetLocalTime(wxDate(10,31,year).Previous(1),2-1));
- return STDtime;
-}
-
-bool wxTime::IsDST() const
-/*
- Return TRUE if this local Standard Time should be adjusted
- for Daylight Savings Time.
-*/
-{
- long daycount = (long)(sec/seconds_in_day);
-
- // At this point, daycount is the number of days from 1/1/1901.
- // Need to convert to julian date (which starts at 1/1/4713 B.C.)
- wxDate date(1,1,1901);
- date += daycount;
-
- unsigned year = date.GetYear();
- if (DST_OBSERVED)
- {
- if (*this >= GetBeginDST(year))
- if (*this < GetEndDST(year)) return TRUE;
- }
- return FALSE;
-}
-
-wxTime wxTime::GetLocalTime() const
-/*
- Adjusts this GM Time for local time zone and Daylight Savings Time.
-*/
-{
- wxTime local_time(sec-TIME_ZONE);
- if (local_time.IsDST()) local_time.sec += 3600;
- return local_time;
-}
-
-minuteTy wxTime::GetMinute() const
-/*
- Return the minute of this wxTime in local time; i.e., adjust
- for time zone and Daylight Savings Time.
-*/
-{
- return GetLocalTime().GetMinuteGMT();
-}
-
-minuteTy wxTime::GetMinuteGMT() const
-/*
- Return the minute of this wxTime in GMT.
-*/
-{
- return (minuteTy)(((sec % 86400) % 3600) / 60);
-}
-
-secondTy wxTime::GetSecond() const
-/*
- Return the second of this wxTime.
-*/
-{
- return (secondTy)(((sec % 86400) % 3600) % 60);
-}
-
-secondTy wxTime::GetSecondGMT() const
-/*
- Return the minute of this wxTime in GMT.
-*/
-{
- return (secondTy)(((sec % 86400) % 3600) % 60);
-}
-
-int wxTime::GetDay() const
-{
- wxDate da((wxDate) *this);
- return da.GetDay();
-}
-
-int wxTime::GetDayOfWeek() const
-{
- wxDate da((wxDate) *this);
- return da.GetDayOfWeek();
-}
-
-int wxTime::GetMonth() const
-{
- wxDate da((wxDate) *this);
- return da.GetMonth();
-}
-
-int wxTime::GetYear() const
-{
- wxDate da((wxDate) *this);
- return da.GetYear();
-}
-
-wxTime wxTime::Max(const wxTime& t) const
-{
- if (t < *this) return *this;
- return t;
-}
-
-wxTime wxTime::Min(const wxTime& t) const
-{
- if (t > *this) return *this;
- return t;
-}
-
-#ifndef __SALFORDC__
-wxTime::operator wxChar *(void)
-{
- return FormatTime();
-}
-#endif
-
-void wxTime::SetFormat(const wxTime::tFormat lFormat,
- const wxTime::tPrecision lPrecision) {
-
- wxTime::Format = lFormat;
- wxTime::Precision = lPrecision;
-}
-
-wxChar *wxTime::FormatTime() const {
- static wxChar timeBuf[30];
- unsigned hh(GetHour());
-
- switch (Format) {
- case wx12h:
- hh -= 12;
- break;
- case wx24h:
- break;
- }
-
- switch (Precision) {
- case wxStdMinSec:
- wxSprintf(timeBuf,wxT("%2d:%02d:%02d"),hh,GetMinute(),GetSecond());
- break;
- case wxStdMin:
- wxSprintf(timeBuf,wxT("%2d:%02d"),hh,GetMinute());
- break;
- }
-
- if (Format == wx12h)
- if (GetHour() <= 12)
- wxStrcat(timeBuf,_("am"));
- else
- wxStrcat(timeBuf,_("pm"));
-
- return timeBuf;
-}
-
-/*
-int wxTime::compare(const Object& ob) const
-{
- assertArgSpecies(ob,classDesc,"compare");
- register clockTy t = castdown(ob).sec;
- if (sec < t) return -1;
- if (sec > t) return 1;
- return 0;
-}
-
-void wxTime::deepenShallowCopy() {}
-
-unsigned wxTime::hash() const { return sec; }
-
-bool wxTime::isEqual(const Object& ob) const
-{
- return ob.isSpecies(classDesc) && *this==castdown(ob);
-}
-
-const Class* wxTime::species() const { return &classDesc; }
-
-void wxTime::printOn(ostream& strm) const
-{
- register unsigned hh = GetHour();
- wxDate(*this).printOn(strm);
- strm << ' ' << ((hh <= 12) ? hh : hh-12) << ':'
- << setfill('0') << setw(2) << GetMinute() << ':'
- << setfill('0') << setw(2) << GetSecond() << ' ';
- if (hh < 12) strm << _("am");
- else strm << _("pm");
-}
-
-wxTime::wxTime(OIOin& strm)
- : BASE(strm)
-{
- unsigned long usec;
- strm >> sec >> usec;
-}
-
-void wxTime::storer(OIOout& strm) const
-{
- BASE::storer(strm);
- strm << sec << 0l;
-}
-
-
-wxTime::wxTime(OIOifd& fd)
- : BASE(fd)
-{
- unsigned long usec;
- fd >> sec >> usec;
-}
-
-void wxTime::storer(OIOofd& fd) const
-{
- BASE::storer(fd);
- fd << sec << 0l;
-}
-*/
-
-#endif