X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/24e148adbe79d7c911086f5d4fa46e94d7ced003..7ef8bfc4c75374ffd4de538cdeaa0f81b69bf61f:/include/wx/datetime.h diff --git a/include/wx/datetime.h b/include/wx/datetime.h index d1ded5d9a4..1dc31ef6d5 100644 --- a/include/wx/datetime.h +++ b/include/wx/datetime.h @@ -17,6 +17,8 @@ #pragma interface "datetime.h" #endif +#if wxUSE_DATETIME + #include #include // for INT_MIN @@ -30,12 +32,27 @@ class WXDLLEXPORT wxDateSpan; // performances and this only leads to increased rebuild time (because every // time an inline method is changed, all files including the header must be // rebuilt) -#ifdef __WXDEBUG__ +// For Mingw32, causes a link error. +#if defined( __WXDEBUG__) && !defined(__MINGW32__) + #undef inline #define inline #endif // Debug +// not all c-runtimes are based on 1/1/1970 being (time_t) 0 +// set this to the corresponding value in seconds 1/1/1970 has on your +// systems c-runtime + +#ifdef __WXMAC__ +#if __MSL__ < 0x6000 + #define WX_TIME_BASE_OFFSET ( 2082844800L + 126144000L ) +#else + #define WX_TIME_BASE_OFFSET 0 +#endif +#else + #define WX_TIME_BASE_OFFSET 0 +#endif /* - * TODO Well, everything :-) + * TODO * * + 1. Time zones with minutes (make TimeZone a class) * ? 2. getdate() function like under Solaris @@ -63,7 +80,7 @@ class WXDLLEXPORT wxDateSpan; wxTimeSpan + wxTimeSpan = wxTimeSpan wxDateSpan + wxDateSpan = wxDateSpan - substraction + subtraction ------------ wxDateTime - wxDateTime = wxTimeSpan wxDateTime - wxTimeSpan = wxDateTime @@ -84,7 +101,7 @@ class WXDLLEXPORT wxDateSpan; -wxDateSpan = wxDateSpan For each binary operation OP (+, -, *) we have the following operatorOP=() as - a method and the method with a symbolic name OPER (Add, Substract, Multiply) + a method and the method with a symbolic name OPER (Add, Subtract, Multiply) as a synonym for it and another const method with the same name which returns the changed copy of the object and operatorOP() as a global function which is implemented in terms of the const version of OPEN. For the unary - we have @@ -98,7 +115,7 @@ class WXDLLEXPORT wxDateSpan; // wxInvalidDateTime) class WXDLLEXPORT wxDateTime; -WXDLLEXPORT_DATA(extern wxDateTime&) wxDefaultDateTime; +WXDLLEXPORT_DATA(extern const wxDateTime&) wxDefaultDateTime; #define wxInvalidDateTime wxDefaultDateTime // ---------------------------------------------------------------------------- @@ -510,6 +527,10 @@ public: // return the wxDateTime object for the current time static inline wxDateTime Now(); + // return the wxDateTime object for the current time with millisecond + // precision (if available on this platform) + static wxDateTime UNow(); + // return the wxDateTime object for today midnight: i.e. as Now() but // with time set to 0 static inline wxDateTime Today(); @@ -520,7 +541,7 @@ public: // ------------------------------------------------------------------------ // default ctor does not initialize the object, use Set()! - wxDateTime() { } + wxDateTime() { m_time = wxLongLong((long)ULONG_MAX, ULONG_MAX); } // from time_t: seconds since the Epoch 00:00:00 UTC, Jan 1, 1970) #if (!(defined(__VISAGECPP__) && __IBMCPP__ >= 400)) @@ -542,7 +563,7 @@ public: wxDateTime_t millisec = 0); // from separate values for each component with explicit date inline wxDateTime(wxDateTime_t day, // day of the month - Month month = Inv_Month, + Month month, int year = Inv_Year, // 1999, not 99 please! wxDateTime_t hour = 0, wxDateTime_t minute = 0, @@ -585,7 +606,7 @@ public: // from separate values for each component with explicit date // (defaults for month and year are the current values) wxDateTime& Set(wxDateTime_t day, - Month month = Inv_Month, + Month month, int year = Inv_Year, // 1999, not 99 please! wxDateTime_t hour = 0, wxDateTime_t minute = 0, @@ -754,8 +775,8 @@ public: // result of timezone shift) // ------------------------------------------------------------------------ - // is the date valid (TRUE even for non initialized objects)? - inline bool IsValid() const { return this != &wxInvalidDateTime; } + // is the date valid? + inline bool IsValid() const { return m_time != wxInvalidDateTime.m_time; } // get the broken down date/time representation in the given timezone // @@ -855,10 +876,10 @@ public: inline wxDateTime& operator+=(const wxTimeSpan& diff); // return the difference of the date with a time span - inline wxDateTime Substract(const wxTimeSpan& diff) const; - // substract a time span (positive or negative) - inline wxDateTime& Substract(const wxTimeSpan& diff); - // substract a time span (positive or negative) + inline wxDateTime Subtract(const wxTimeSpan& diff) const; + // subtract a time span (positive or negative) + inline wxDateTime& Subtract(const wxTimeSpan& diff); + // subtract a time span (positive or negative) inline wxDateTime& operator-=(const wxTimeSpan& diff); // return the sum of the date with a date span @@ -869,14 +890,14 @@ public: inline wxDateTime& operator+=(const wxDateSpan& diff); // return the difference of the date with a date span - inline wxDateTime Substract(const wxDateSpan& diff) const; - // substract a date span (positive or negative) - inline wxDateTime& Substract(const wxDateSpan& diff); - // substract a date span (positive or negative) + inline wxDateTime Subtract(const wxDateSpan& diff) const; + // subtract a date span (positive or negative) + inline wxDateTime& Subtract(const wxDateSpan& diff); + // subtract a date span (positive or negative) inline wxDateTime& operator-=(const wxDateSpan& diff); // return the difference between two dates - inline wxTimeSpan Substract(const wxDateTime& dt) const; + inline wxTimeSpan Subtract(const wxDateTime& dt) const; // conversion to/from text: all conversions from text return the pointer to // the next character following the date specification (i.e. the one where @@ -961,7 +982,7 @@ private: // ---------------------------------------------------------------------------- // This class contains a difference between 2 wxDateTime values, so it makes -// sense to add it to wxDateTime and it is the result of substraction of 2 +// sense to add it to wxDateTime and it is the result of subtraction of 2 // objects of that class. See also wxDateSpan. // ---------------------------------------------------------------------------- @@ -1017,11 +1038,11 @@ public: wxTimeSpan& operator+=(const wxTimeSpan& diff) { return Add(diff); } // return the difference of two timespans - inline wxTimeSpan Substract(const wxTimeSpan& diff) const; - // substract another timespan - inline wxTimeSpan& Substract(const wxTimeSpan& diff); - // substract another timespan - wxTimeSpan& operator-=(const wxTimeSpan& diff) { return Substract(diff); } + inline wxTimeSpan Subtract(const wxTimeSpan& diff) const; + // subtract another timespan + inline wxTimeSpan& Subtract(const wxTimeSpan& diff); + // subtract another timespan + wxTimeSpan& operator-=(const wxTimeSpan& diff) { return Subtract(diff); } // multiply timespan by a scalar inline wxTimeSpan Multiply(int n) const; @@ -1094,11 +1115,7 @@ public: // resulting text representation. Notice that only some of format // specifiers valid for wxDateTime are valid for wxTimeSpan: hours, // minutes and seconds make sense, but not "PM/AM" string for example. - wxString Format(const wxChar *format = _T("%c")) const; - // preferred date representation for the current locale - wxString FormatDate() const { return Format(_T("%x")); } - // preferred time representation for the current locale - wxString FormatTime() const { return Format(_T("%X")); } + wxString Format(const wxChar *format = _T("%H:%M:%S")) const; // implementation // ------------------------------------------------------------------------ @@ -1125,7 +1142,7 @@ private: // won't be changed unless the resulting date would be invalid: for example, // Jan 31 + 1 month will be Feb 28, not (non existing) Feb 31. // -// Because of this feature, adding and substracting back again the same +// Because of this feature, adding and subtracting back again the same // wxDateSpan will *not*, in general give back the original date: Feb 28 - 1 // month will be Jan 28, not Jan 31! // @@ -1212,10 +1229,10 @@ public: inline wxDateSpan& operator+=(const wxDateSpan& other); // return difference of two date spans - inline wxDateSpan Substract(const wxDateSpan& other) const; - // substract another wxDateSpan from us - inline wxDateSpan& Substract(const wxDateSpan& other); - // substract another wxDateSpan from us + inline wxDateSpan Subtract(const wxDateSpan& other) const; + // subtract another wxDateSpan from us + inline wxDateSpan& Subtract(const wxDateSpan& other); + // subtract another wxDateSpan from us inline wxDateSpan& operator-=(const wxDateSpan& other); // return a copy of this time span with changed sign @@ -1245,7 +1262,7 @@ private: #include "wx/dynarray.h" -WX_DECLARE_OBJARRAY(wxDateTime, wxDateTimeArray); +WX_DECLARE_EXPORTED_OBJARRAY(wxDateTime, wxDateTimeArray); // ---------------------------------------------------------------------------- // wxDateTimeHolidayAuthority: an object of this class will decide whether a @@ -1257,10 +1274,12 @@ WX_DECLARE_OBJARRAY(wxDateTime, wxDateTimeArray); // ---------------------------------------------------------------------------- class WXDLLEXPORT wxDateTimeHolidayAuthority; -WX_DEFINE_ARRAY(wxDateTimeHolidayAuthority *, wxHolidayAuthoritiesArray); +WX_DEFINE_EXPORTED_ARRAY(wxDateTimeHolidayAuthority *, wxHolidayAuthoritiesArray); +class wxDateTimeHolidaysModule; class WXDLLEXPORT wxDateTimeHolidayAuthority { +friend class wxDateTimeHolidaysModule; public: // returns TRUE if the given date is a holiday static bool IsHoliday(const wxDateTime& dt); @@ -1348,7 +1367,7 @@ inline wxDateTime WXDLLEXPORT operator+(const wxDateTime& dt, inline wxDateTime WXDLLEXPORT operator-(const wxDateTime& dt, const wxTimeSpan& ts) { - return dt.Substract(ts); + return dt.Subtract(ts); } inline wxDateTime WXDLLEXPORT operator+(const wxDateTime& dt, @@ -1360,13 +1379,13 @@ inline wxDateTime WXDLLEXPORT operator+(const wxDateTime& dt, inline wxDateTime WXDLLEXPORT operator-(const wxDateTime& dt, const wxDateSpan& ds) { - return dt.Substract(ds); + return dt.Subtract(ds); } inline wxTimeSpan WXDLLEXPORT operator-(const wxDateTime& dt1, const wxDateTime& dt2) { - return dt1.Substract(dt2); + return dt1.Subtract(dt2); } // comparison @@ -1553,4 +1572,6 @@ inline WXDLLEXPORT void wxPrevWDay(wxDateTime::WeekDay& wd) : (wxDateTime::WeekDay)(wd - 1); } +#endif // wxUSE_DATETIME + #endif // _WX_DATETIME_H