X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/dc84437ea2289b601129e218e6b51dc80253c3db..6c9a19aabab3a878b565e6c2a5f2a3824277c4dc:/include/wx/datetime.h diff --git a/include/wx/datetime.h b/include/wx/datetime.h index 017c226b89..c9e9ec35e8 100644 --- a/include/wx/datetime.h +++ b/include/wx/datetime.h @@ -7,16 +7,18 @@ // Created: 10.02.99 // RCS-ID: $Id$ // Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_DATETIME_H #define _WX_DATETIME_H -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(__APPLE__) #pragma interface "datetime.h" #endif +#include "wx/defs.h" + #if wxUSE_DATETIME #include @@ -34,7 +36,7 @@ class WXDLLEXPORT wxDateSpan; // rebuilt) // For Mingw32, causes a link error. (VZ: why?) -#if defined( __WXDEBUG__) && !defined(__MINGW32__) +#if defined( __WXDEBUG__) && !defined(__MINGW32__) && !(defined(_MSC_VER) && wxUSE_ACCESSIBILITY) #define wxDATETIME_DONT_INLINE #undef inline @@ -48,15 +50,11 @@ class WXDLLEXPORT wxDateSpan; // set this to the corresponding value in seconds 1/1/1970 has on your // systems c-runtime -#ifdef __WXMAC__ -#if __MSL__ < 0x6000 +#if defined(__WXMAC__) && !defined(__DARWIN__) && __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 * @@ -657,8 +655,10 @@ public: // ------------------------------------------------------------------------ // set to the given week day in the same week as this one - wxDateTime& SetToWeekDayInSameWeek(WeekDay weekday); - inline wxDateTime GetWeekDayInSameWeek(WeekDay weekday) const; + wxDateTime& SetToWeekDayInSameWeek(WeekDay weekday, + WeekFlags flags = Monday_First); + inline wxDateTime GetWeekDayInSameWeek(WeekDay weekday, + WeekFlags flags = Monday_First) const; // set to the next week day following this one wxDateTime& SetToNextWeekDay(WeekDay weekday); @@ -692,8 +692,12 @@ public: // sets the date to the given day of the given week in the year, // returns TRUE on success and FALSE if given date doesn't exist (e.g. // numWeek is > 53) - bool SetToTheWeek(wxDateTime_t numWeek, WeekDay weekday = Mon); - inline wxDateTime GetWeek(wxDateTime_t numWeek, WeekDay weekday = Mon) const; + bool SetToTheWeek(wxDateTime_t numWeek, + WeekDay weekday = Mon, + WeekFlags flags = Monday_First); + inline wxDateTime GetWeek(wxDateTime_t numWeek, + WeekDay weekday = Mon, + WeekFlags flags = Monday_First) const; // sets the date to the last day of the given (or current) month or the // given (or current) year @@ -843,6 +847,15 @@ public: // adoption of the Gregorian calendar is simply unknown. bool IsGregorianDate(GregorianAdoption country = Gr_Standard) const; + // dos date and time format + // ------------------------------------------------------------------------ + + // set from the DOS packed format + wxDateTime& SetFromDOS(unsigned long ddt); + + // pack the date in DOS format + unsigned long GetAsDOS() const; + // comparison (see also functions below for operator versions) // ------------------------------------------------------------------------ @@ -1161,6 +1174,12 @@ private: // Beware about weeks: if you specify both weeks and days, the total number of // days added will be 7*weeks + days! See also GetTotalDays() function. // +// Equality operators are defined for wxDateSpans. Two datespans are equal if +// they both give the same target date when added to *every* source date. +// Thus wxDateSpan::Months(1) is not equal to wxDateSpan::Days(30), because +// they not give the same date when added to 1 Feb. But wxDateSpan::Days(14) is +// equal to wxDateSpan::Weeks(2) +// // Finally, notice that for adding hours, minutes &c you don't need this // class: wxTimeSpan will do the job because there are no subtleties // associated with those. @@ -1507,6 +1526,24 @@ inline bool WXDLLEXPORT operator!=(const wxTimeSpan &t1, const wxTimeSpan &t2) // wxDateSpan // ---------------------------------------------------------------------------- +// comparison +// ---------- + +// ds1 == d2 if and only if for every wxDateTime t t + ds1 == t + ds2 +inline WXDLLEXPORT bool operator==(const wxDateSpan& ds1, + const wxDateSpan& ds2) +{ + return ds1.GetYears() == ds2.GetYears() && + ds1.GetMonths() == ds2.GetMonths() && + ds1.GetTotalDays() == ds2.GetTotalDays(); +} + +inline WXDLLEXPORT bool operator!=(const wxDateSpan& ds1, + const wxDateSpan& ds2) +{ + return !(ds1 == ds2); +} + // arithmetics // -----------