%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Name:        datetime.tex
%% Purpose:     wxDateTime documentation
%% Author:      Vadim Zeitlin
%% Modified by:
%% Created:     07.03.00
%% RCS-ID:      $Id: datetime.tex,v 1.13.2.3 2004/05/04 08:51:54 JS Exp $
%% Copyright:   (c) Vadim Zeitlin
%% License:     wxWidgets license
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{\class{wxDateTime}}\label{wxdatetime}

wxDateTime class represents an absolute moment in the time.

\wxheading{Types}

The type {\tt wxDateTime\_t} is typedefed as {\tt unsigned short} and is used
to contain the number of years, hours, minutes, seconds and milliseconds.

\wxheading{Constants}

Global constant {\tt wxDefaultDateTime} and synonym for it {\tt wxInvalidDateTime} are defined. This constant will be different from any valid
wxDateTime object.

All the following constants are defined inside wxDateTime class (i.e., to refer to
them you should prepend their names with {\tt wxDateTime::}).

Time zone symbolic names:

\begin{verbatim}
    enum TZ
    {
        // the time in the current time zone
        Local,

        // zones from GMT (= Greenwhich Mean Time): they're guaranteed to be
        // consequent numbers, so writing something like `GMT0 + offset' is
        // safe if abs(offset) <= 12

        // underscore stands for minus
        GMT_12, GMT_11, GMT_10, GMT_9, GMT_8, GMT_7,
        GMT_6, GMT_5, GMT_4, GMT_3, GMT_2, GMT_1,
        GMT0,
        GMT1, GMT2, GMT3, GMT4, GMT5, GMT6,
        GMT7, GMT8, GMT9, GMT10, GMT11, GMT12,
        // Note that GMT12 and GMT_12 are not the same: there is a difference
        // of exactly one day between them

        // some symbolic names for TZ

        // Europe
        WET = GMT0,                         // Western Europe Time
        WEST = GMT1,                        // Western Europe Summer Time
        CET = GMT1,                         // Central Europe Time
        CEST = GMT2,                        // Central Europe Summer Time
        EET = GMT2,                         // Eastern Europe Time
        EEST = GMT3,                        // Eastern Europe Summer Time
        MSK = GMT3,                         // Moscow Time
        MSD = GMT4,                         // Moscow Summer Time

        // US and Canada
        AST = GMT_4,                        // Atlantic Standard Time
        ADT = GMT_3,                        // Atlantic Daylight Time
        EST = GMT_5,                        // Eastern Standard Time
        EDT = GMT_4,                        // Eastern Daylight Saving Time
        CST = GMT_6,                        // Central Standard Time
        CDT = GMT_5,                        // Central Daylight Saving Time
        MST = GMT_7,                        // Mountain Standard Time
        MDT = GMT_6,                        // Mountain Daylight Saving Time
        PST = GMT_8,                        // Pacific Standard Time
        PDT = GMT_7,                        // Pacific Daylight Saving Time
        HST = GMT_10,                       // Hawaiian Standard Time
        AKST = GMT_9,                       // Alaska Standard Time
        AKDT = GMT_8,                       // Alaska Daylight Saving Time

        // Australia

        A_WST = GMT8,                       // Western Standard Time
        A_CST = GMT12 + 1,                  // Central Standard Time (+9.5)
        A_EST = GMT10,                      // Eastern Standard Time
        A_ESST = GMT11,                     // Eastern Summer Time

        // Universal Coordinated Time = the new and politically correct name
        // for GMT
        UTC = GMT0
    };
\end{verbatim}

Month names: Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec and
Inv\_Month for an invalid.month value are the values of {\tt wxDateTime::Month}
enum.

Likewise, Sun, Mon, Tue, Wed, Thu, Fri, Sat, and Inv\_WeekDay are the values in
{\tt wxDateTime::WeekDay} enum.

Finally, Inv\_Year is defined to be an invalid value for year parameter.

\helpref{GetMonthName()}{wxdatetimegetmonthname} and
\helpref{GetWeekDayName}{wxdatetimegetweekdayname} functions use the followign
flags:

\begin{verbatim}
    enum NameFlags
    {
        Name_Full = 0x01,       // return full name
        Name_Abbr = 0x02        // return abbreviated name
    };
\end{verbatim}

Several functions accept an extra parameter specifying the calendar to use
(although most of them only support now the Gregorian calendar). This
parameters is one of the following values:

\begin{verbatim}
    enum Calendar
    {
        Gregorian,  // calendar currently in use in Western countries
        Julian      // calendar in use since -45 until the 1582 (or later)
    };
\end{verbatim}

Date calculations often depend on the country and wxDateTime allows to set the
country whose conventions should be used using 
\helpref{SetCountry}{wxdatetimesetcountry}. It takes one of the following
values as parameter:

\begin{verbatim}
    enum Country
    {
        Country_Unknown, // no special information for this country
        Country_Default, // set the default country with SetCountry() method
                         // or use the default country with any other

        Country_WesternEurope_Start,
        Country_EEC = Country_WesternEurope_Start,
        France,
        Germany,
        UK,
        Country_WesternEurope_End = UK,

        Russia,

        USA
    };
\end{verbatim}

Different parts of the world use different conventions for the week start.
In some countries, the week starts on Sunday, while in others -- on Monday.
The ISO standard doesn't address this issue, so we support both conventions in
the functions whose result depends on it (\helpref{GetWeekOfYear}{wxdatetimegetweekofyear} and 
\helpref{GetWeekOfMonth}{wxdatetimegetweekofmonth}).

The desired behvaiour may be specified by giving one of the following
constants as argument to these functions:

\begin{verbatim}
    enum WeekFlags
    {
        Default_First,   // Sunday_First for US, Monday_First for the rest
        Monday_First,    // week starts with a Monday
        Sunday_First     // week starts with a Sunday
    };
\end{verbatim}

\wxheading{Derived from}

No base class

\wxheading{Include files}

<wx/datetime.h>

\wxheading{See also}

\helpref{Date classes overview}{wxdatetimeoverview},\rtfsp
\helpref{wxTimeSpan}{wxtimespan},\rtfsp
\helpref{wxDateSpan}{wxdatespan},\rtfsp
\helpref{wxCalendarCtrl}{wxcalendarctrl}

\latexignore{\rtfignore{\wxheading{Function groups}}}

\membersection{Static functions}

For convenience, all static functions are collected here. These functions
either set or return the static variables of wxDateSpan (the country), return
the current moment, year, month or number of days in it, or do some general
calendar-related actions.

Please note that although several function accept an extra {\it Calendar}
parameter, it is currently ignored as only the Gregorian calendar is
supported. Future versions will support other calendars.

\pythonnote{These methods are standalone functions named 
{\tt wxDateTime\_<StaticMethodName>} in wxPython.}

\helpref{SetCountry}{wxdatetimesetcountry}\\
\helpref{GetCountry}{wxdatetimegetcountry}\\
\helpref{IsWestEuropeanCountry}{wxdatetimeiswesteuropeancountry}\\
\helpref{GetCurrentYear}{wxdatetimegetcurrentyear}\\
\helpref{ConvertYearToBC}{wxdatetimeconvertyeartobc}\\
\helpref{GetCurrentMonth}{wxdatetimegetcurrentmonth}\\
\helpref{IsLeapYear}{wxdatetimeisleapyear}\\
\helpref{GetCentury}{wxdatetimegetcentury}\\
\helpref{GetNumberOfDays}{wxdatetimegetnumberofdays}\\
\helpref{GetNumberOfDays}{wxdatetimegetnumberofdays}\\
\helpref{GetMonthName}{wxdatetimegetmonthname}\\
\helpref{GetWeekDayName}{wxdatetimegetweekdayname}\\
\helpref{GetAmPmStrings}{wxdatetimegetampmstrings}\\
\helpref{IsDSTApplicable}{wxdatetimeisdstapplicable}\\
\helpref{GetBeginDST}{wxdatetimegetbegindst}\\
\helpref{GetEndDST}{wxdatetimegetenddst}\\
\helpref{Now}{wxdatetimenow}\\
\helpref{UNow}{wxdatetimeunow}\\
\helpref{Today}{wxdatetimetoday}

\membersection{Constructors, assignment operators and setters}

Constructors and various {\tt Set()} methods are collected here. If you
construct a date object from separate values for day, month and year, you
should use \helpref{IsValid}{wxdatetimeisvalid} method to check that the
values were correct as constructors can not return an error code.

\helpref{wxDateTime()}{wxdatetimewxdatetimedef}\\
\helpref{wxDateTime(time\_t)}{wxdatetimewxdatetimetimet}\\
\helpref{wxDateTime(struct tm)}{wxdatetimewxdatetimetm}\\
%\helpref{wxDateTime(struct Tm)}{wxdatetimewxdatetimetm} - Tm not documented yet\\
\helpref{wxDateTime(double jdn)}{wxdatetimewxdatetimejdn}\\
\helpref{wxDateTime(h, m, s, ms)}{wxdatetimewxdatetimetime}\\
\helpref{wxDateTime(day, mon, year, h, m, s, ms)}{wxdatetimewxdatetimedate}\\
\helpref{SetToCurrent}{wxdatetimesettocurrent}\\
\helpref{Set(time\_t)}{wxdatetimesettimet}\\
\helpref{Set(struct tm)}{wxdatetimesettm}\\
%\helpref{Set(struct Tm)}{wxdatetimesettm} - Tm not documented yet\\
\helpref{Set(double jdn)}{wxdatetimesetjdn}\\
\helpref{Set(h, m, s, ms)}{wxdatetimesettime}\\
\helpref{Set(day, mon, year, h, m, s, ms)}{wxdatetimesetdate}\\
\helpref{SetFromDOS(unsigned long ddt)}{wxdatetimesetfromdos}\\
\helpref{ResetTime}{wxdatetimeresettime}\\
\helpref{SetYear}{wxdatetimesetyear}\\
\helpref{SetMonth}{wxdatetimesetmonth}\\
\helpref{SetDay}{wxdatetimesetdate}\\
\helpref{SetHour}{wxdatetimesethour}\\
\helpref{SetMinute}{wxdatetimesetminute}\\
\helpref{SetSecond}{wxdatetimesetsecond}\\
\helpref{SetMillisecond}{wxdatetimesetmillisecond}\\
\helpref{operator$=$(time\_t)}{wxdatetimeoperatoreqtimet}\\
\helpref{operator$=$(struct tm)}{wxdatetimeoperatoreqtm}
%\helpref{operator$=$(struct Tm)}{wxdatetimeoperatortm2}

\membersection{Accessors}

Here are the trivial accessors. Other functions, which might have to perform
some more complicated calculations to find the answer are under the 
\helpref{Calendar calculations}{wxdatetimecalculations} section.

\helpref{IsValid}{wxdatetimeisvalid}\\
\helpref{GetTicks}{wxdatetimegetticks}\\
\helpref{GetYear}{wxdatetimegetyear}\\
\helpref{GetMonth}{wxdatetimegetmonth}\\
\helpref{GetDay}{wxdatetimegetday}\\
\helpref{GetWeekDay}{wxdatetimegetweekday}\\
\helpref{GetHour}{wxdatetimegethour}\\
\helpref{GetMinute}{wxdatetimegetminute}\\
\helpref{GetSecond}{wxdatetimegetsecond}\\
\helpref{GetMillisecond}{wxdatetimegetmillisecond}\\
\helpref{GetDayOfYear}{wxdatetimegetdayofyear}\\
\helpref{GetWeekOfYear}{wxdatetimegetweekofyear}\\
\helpref{GetWeekOfMonth}{wxdatetimegetweekofmonth}\\
\helpref{GetYearDay}{wxdatetimegetyearday}\\
\helpref{IsWorkDay}{wxdatetimeisworkday}\\
\helpref{IsGregorianDate}{wxdatetimeisgregoriandate}\\
\helpref{GetAsDOS}{wxdatetimegetasdos}

\membersection{Date comparison}

There are several function to allow date comparison. To supplement them, a few
global operators $>$, $<$ etc taking wxDateTime are defined.

\helpref{IsEqualTo}{wxdatetimeisequalto}\\
\helpref{IsEarlierThan}{wxdatetimeisearlierthan}\\
\helpref{IsLaterThan}{wxdatetimeislaterthan}\\
\helpref{IsStrictlyBetween}{wxdatetimeisstrictlybetween}\\
\helpref{IsBetween}{wxdatetimeisbetween}\\
\helpref{IsSameDate}{wxdatetimeissamedate}\\
\helpref{IsSameTime}{wxdatetimeissametime}\\
\helpref{IsEqualUpTo}{wxdatetimeisequalupto}

\membersection{Date arithmetics}

These functions carry out \helpref{arithmetics}{tdatearithm} on the wxDateTime
objects. As explained in the overview, either wxTimeSpan or wxDateSpan may be
added to wxDateTime, hence all functions are overloaded to accept both
arguments.

Also, both {\tt Add()} and {\tt Subtract()} have both const and non-const
version. The first one returns a new obejct which represents the
sum/difference of the original one with the argument while the second form
modifies the object to which it is applied. The operators $-=$ and $+=$ are
defined to be equivalent to the second forms of these functions.

\helpref{Add(wxTimeSpan)}{wxdatetimeaddts}\\
\helpref{Add(wxDateSpan)}{wxdatetimeaddds}\\
\helpref{Subtract(wxTimeSpan)}{wxdatetimesubtractts}\\
\helpref{Subtract(wxDateSpan)}{wxdatetimesubtractds}\\
\helpref{Subtract(wxDateTime)}{wxdatetimesubtractdt}\\
\helpref{oparator$+=$(wxTimeSpan)}{wxdatetimeaddts}\\
\helpref{oparator$+=$(wxDateSpan)}{wxdatetimeaddds}\\
\helpref{oparator$-=$(wxTimeSpan)}{wxdatetimesubtractts}\\
\helpref{oparator$-=$(wxDateSpan)}{wxdatetimesubtractds}

\membersection{Parsing and formatting dates}

These functions convert wxDateTime obejcts to and from text. The
conversions to text are mostly trivial: you can either do it using the default
date and time representations for the current locale ( 
\helpref{FormatDate}{wxdatetimeformatdate} and 
\helpref{FormatTime}{wxdatetimeformattime}), using the international standard
representation defined by ISO 8601 ( 
\helpref{FormatISODate}{wxdatetimeformatisodate} and 
\helpref{FormatISOTime}{wxdatetimeformatisotime}) or by specifying any format
at all and using \helpref{Format}{wxdatetimeformat} directly.

The conversions from text are more interesting, as there are much more
possibilities to care about. The simplest cases can be taken care of with 
\helpref{ParseFormat}{wxdatetimeparseformat} which can parse any date in the
given (rigid) format. \helpref{ParseRfc822Date}{wxdatetimeparserfc822date} is
another function for parsing dates in predefined format -- the one of RFC 822
which (still...) defines the format of email messages on the Internet. This
format can not be described with {\tt strptime(3)}-like format strings used by 
\helpref{Format}{wxdatetimeformat}, hence the need for a separate function.

But the most interesting functions are 
\helpref{ParseTime}{wxdatetimeparsetime}, 
\helpref{ParseDate}{wxdatetimeparsedate} and 
\helpref{ParseDateTime}{wxdatetimeparsedatetime}. They try to parse the date
ans time (or only one of them) in `free' format, i.e. allow them to be
specified in any of possible ways. These functions will usually be used to
parse the (interactive) user input which is not bound to be in any predefined
format. As an example, \helpref{ParseDateTime}{wxdatetimeparsedatetime} can
parse the strings such as {\tt "tomorrow"}, {\tt "March first"} and even 
{\tt "next Sunday"}.

\helpref{ParseRfc822Date}{wxdatetimeparserfc822date}\\
\helpref{ParseFormat}{wxdatetimeparseformat}\\
\helpref{ParseDateTime}{wxdatetimeparsedatetime}\\
\helpref{ParseDate}{wxdatetimeparsedate}\\
\helpref{ParseTime}{wxdatetimeparsetime}\\
\helpref{Format}{wxdatetimeformat}\\
\helpref{FormatDate}{wxdatetimeformatdate}\\
\helpref{FormatTime}{wxdatetimeformattime}\\
\helpref{FormatISODate}{wxdatetimeformatisodate}\\
\helpref{FormatISOTime}{wxdatetimeformatisotime}

\membersection{Calendar calculations}\label{wxdatetimecalculations}

The functions in this section perform the basic calendar calculations, mostly
related to the week days. They allow to find the given week day in the
week with given number (either in the month or in the year) and so on.

All (non-const) functions in this section don't modify the time part of the
wxDateTime -- they only work with the date part of it.

\helpref{SetToWeekDayInSameWeek}{wxdatetimesettoweekdayinsameweek}\\
\helpref{GetWeekDayInSameWeek}{wxdatetimegetweekdayinsameweek}\\
\helpref{SetToNextWeekDay}{wxdatetimesettonextweekday}\\
\helpref{GetNextWeekDay}{wxdatetimegetnextweekday}\\
\helpref{SetToPrevWeekDay}{wxdatetimesettoprevweekday}\\
\helpref{GetPrevWeekDay}{wxdatetimegetprevweekday}\\
\helpref{SetToWeekDay}{wxdatetimesettoweekday}\\
\helpref{GetWeekDay}{wxdatetimegetweekday2}\\
\helpref{SetToLastWeekDay}{wxdatetimesettolastweekday}\\
\helpref{GetLastWeekDay}{wxdatetimegetlastweekday}\\
\helpref{SetToTheWeek}{wxdatetimesettotheweek}\\
\helpref{GetWeek}{wxdatetimegetweek}\\
\helpref{SetToLastMonthDay}{wxdatetimesettolastmonthday}\\
\helpref{GetLastMonthDay}{wxdatetimegetlastmonthday}\\
\helpref{SetToYearDay}{wxdatetimesettoyearday}\\
\helpref{GetYearDay}{wxdatetimegetyearday}

\membersection{Astronomical/historical functions}

Some degree of support for the date units used in astronomy and/or history is
provided. You can construct a wxDateTime object from a
\helpref{JDN}{wxdatetimesetjdn} and you may also get its JDN,
\helpref{MJD}{wxdatetimegetmodifiedjuliandaynumber} or
\helpref{Rata Die number}{wxdatetimegetratadie} from it.

\helpref{wxDateTime(double jdn)}{wxdatetimewxdatetimejdn}\\
\helpref{Set(double jdn)}{wxdatetimesetjdn}\\
\helpref{GetJulianDayNumber}{wxdatetimegetjuliandaynumber}\\
\helpref{GetJDN}{wxdatetimegetjdn}\\
\helpref{GetModifiedJulianDayNumber}{wxdatetimegetmodifiedjuliandaynumber}\\
\helpref{GetMJD}{wxdatetimegetmjd}\\
\helpref{GetRataDie}{wxdatetimegetratadie}

\membersection{Time zone and DST support}

Please see the \helpref{time zone overview}{tdatetimezones} for more
information about time zones. ormally, these functions should be rarely used.

\helpref{ToTimezone}{wxdatetimetotimezone}\\
\helpref{MakeTimezone}{wxdatetimemaketimezone}\\
\helpref{ToGMT}{wxdatetimetogmt}\\
\helpref{MakeGMT}{wxdatetimemakegmt}\\
\helpref{GetBeginDST}{wxdatetimegetbegindst}\\
\helpref{GetEndDST}{wxdatetimegetenddst}\\
\helpref{IsDST}{wxdatetimeisdst}

\helponly{\insertatlevel{2}{

\wxheading{Members}

}}

%%%%%%%%%%%%%%%%%%%%%%%%%%% static functions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\membersection{wxDateTime::ConvertYearToBC}\label{wxdatetimeconvertyeartobc}

\func{static int}{ConvertYearToBC}{\param{int }{year}}

Converts the year in absolute notation (i.e. a number which can be negative,
positive or zero) to the year in BC/AD notation. For the positive years,
nothing is done, but the year 0 is year 1 BC and so for other years there is a
difference of 1.

This function should be used like this:

\begin{verbatim}
    wxDateTime dt(...);
    int y = dt.GetYear();
    printf("The year is %d%s", wxDateTime::ConvertYearToBC(y), y > 0 ? "AD" : "BC");
\end{verbatim}

\membersection{wxDateTime::GetAmPmStrings}\label{wxdatetimegetampmstrings}

\func{static void}{GetAmPmStrings}{\param{wxString *}{am}, \param{wxString *}{pm}}

Returns the translations of the strings {\tt AM} and {\tt PM} used for time
formatting for the current locale. Either of the pointers may be {\tt NULL} if
the corresponding value is not needed.

\membersection{wxDateTime::GetBeginDST}\label{wxdatetimegetbegindst}

\func{static wxDateTime}{GetBeginDST}{\param{int }{year = Inv\_Year}, \param{Country }{country = Country\_Default}}

Get the beginning of DST for the given country in the given year (current one
by default). This function suffers from limitations described in
\helpref{DST overview}{tdatedst}.

\wxheading{See also}

\helpref{GetEndDST}{wxdatetimegetenddst}

\membersection{wxDateTime::GetCountry}\label{wxdatetimegetcountry}

\func{static Country}{GetCountry}{\void}

Returns the current default country. The default country is used for DST
calculations, for example.

\wxheading{See also}

\helpref{SetCountry}{wxdatetimesetcountry}

\membersection{wxDateTime::GetCurrentYear}\label{wxdatetimegetcurrentyear}

\func{static int}{GetCurrentYear}{\param{Calendar }{cal = Gregorian}}

Get the current year in given calendar (only Gregorian is currently supported).

\membersection{wxDateTime::GetCurrentMonth}\label{wxdatetimegetcurrentmonth}

\func{static Month}{GetCurrentMonth}{\param{Calendar }{cal = Gregorian}}

Get the current month in given calendar (only Gregorian is currently supported).

\membersection{wxDateTime::GetCentury}\label{wxdatetimegetcentury}

\func{static int}{GetCentury}{\param{int }{year = Inv\_Year}}

Get the current century, i.e. first two digits of the year, in given calendar
(only Gregorian is currently supported).

\membersection{wxDateTime::GetEndDST}\label{wxdatetimegetenddst}

\func{static wxDateTime}{GetEndDST}{\param{int }{year = Inv\_Year}, \param{Country }{country = Country\_Default}}

Returns the end of DST for the given country in the given year (current one by
default).

\wxheading{See also}

\helpref{GetBeginDST}{wxdatetimegetbegindst}

\membersection{wxDateTime::GetMonthName}\label{wxdatetimegetmonthname}

\func{static wxString}{GetMonthName}{\param{Month }{month}, \param{NameFlags }{flags = Name\_Full}}

Gets the full (default) or abbreviated (specify {\tt Name\_Abbr} name of the
given month.

\wxheading{See also}

\helpref{GetWeekDayName}{wxdatetimegetweekdayname}

\membersection{wxDateTime::GetNumberOfDays}\label{wxdatetimegetnumberofdays}

\func{static wxDateTime\_t}{GetNumberOfDays}{\param{int }{year}, \param{Calendar }{cal = Gregorian}}

\func{static wxDateTime\_t}{GetNumberOfDays}{\param{Month }{month}, \param{int }{year = Inv\_Year}, \param{Calendar }{cal = Gregorian}}

Returns the number of days in the given year or in the given month of the
year.

The only supported value for {\it cal} parameter is currently {\tt Gregorian}.

\pythonnote{These two methods are named {\tt GetNumberOfDaysInYear}
and {\tt GetNumberOfDaysInMonth} in wxPython.}

\membersection{wxDateTime::GetWeekDayName}\label{wxdatetimegetweekdayname}

\func{static wxString}{GetWeekDayName}{\param{WeekDay }{weekday}, \param{NameFlags }{flags = Name\_Full}}

Gets the full (default) or abbreviated (specify {\tt Name\_Abbr} name of the
given week day.

\wxheading{See also}

\helpref{GetMonthName}{wxdatetimegetmonthname}

\membersection{wxDateTime::IsLeapYear}\label{wxdatetimeisleapyear}

\func{static bool}{IsLeapYear}{\param{int }{year = Inv\_Year}, \param{Calendar }{cal = Gregorian}}

Returns {\tt TRUE} if the {\it year} is a leap one in the specified calendar.

This functions supports Gregorian and Julian calendars.

\membersection{wxDateTime::IsWestEuropeanCountry}\label{wxdatetimeiswesteuropeancountry}

\func{static bool}{IsWestEuropeanCountry}{\param{Country }{country = Country\_Default}}

This function returns {\tt TRUE} if the specified (or default) country is one
of Western European ones. It is used internally by wxDateTime to determine the
DST convention and date and time formatting rules.

\membersection{wxDateTime::IsDSTApplicable}\label{wxdatetimeisdstapplicable}

\func{static bool}{IsDSTApplicable}{\param{int }{year = Inv\_Year}, \param{Country }{country = Country\_Default}}

Returns {\tt TRUE} if DST was used n the given year (the current one by
default) in the given country.

\membersection{wxDateTime::Now}\label{wxdatetimenow}

\func{static wxDateTime}{Now}{\void}

Returns the object corresponding to the current time.

Example:

\begin{verbatim}
    wxDateTime now = wxDateTime::Now();
    printf("Current time in Paris:\t%s\n", now.Format("%c", wxDateTime::CET).c_str());
\end{verbatim}

Note that this function is accurate up to second: 
\helpref{wxDateTime::UNow}{wxdatetimeunow} should be used for better precision
(but it is less efficient and might not be available on all platforms).

\wxheading{See also}

\helpref{Today}{wxdatetimetoday}

\membersection{wxDateTime::SetCountry}\label{wxdatetimesetcountry}

\func{static void}{SetCountry}{\param{Country }{country}}

Sets the country to use by default. This setting influences the DST
calculations, date formatting and other things.

The possible values for {\it country} parameter are enumerated in
\helpref{wxDateTime constants section}{wxdatetime}.

\wxheading{See also}

\helpref{GetCountry}{wxdatetimegetcountry}

\membersection{wxDateTime::Today}\label{wxdatetimetoday}

\func{static wxDateTime}{Today}{\void}

Returns the object corresponding to the midnight of the current day (i.e. the
same as \helpref{Now()}{wxdatetimenow}, but the time part is set to $0$).

\wxheading{See also}

\helpref{Now}{wxdatetimenow}

\membersection{wxDateTime::UNow}\label{wxdatetimeunow}

\func{static wxDateTime}{UNow}{\void}

Returns the object corresponding to the current time including the
milliseconds if a function to get time with such precision is available on the
current platform (supported under most Unices and Win32).

\wxheading{See also}

\helpref{Now}{wxdatetimenow}

%%%%%%%%%%%%%%%%%%%%%%%%%%% constructors &c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\membersection{wxDateTime::wxDateTime}\label{wxdatetimewxdatetimedef}

\func{}{wxDateTime}{\void}

Default constructor. Use one of {\tt Set()} functions to initialize the object
later.

\membersection{wxDateTime::wxDateTime}\label{wxdatetimewxdatetimetimet}

\func{wxDateTime\&}{wxDateTime}{\param{time\_t }{timet}}

Same as \helpref{Set}{wxdatetimewxdatetimetimet}.

\pythonnote{This constructor is named {\tt wxDateTimeFromTimeT} in wxPython.}

\membersection{wxDateTime::wxDateTime}\label{wxdatetimewxdatetimetm}

\func{wxDateTime\&}{wxDateTime}{\param{const struct tm\& }{tm}}

Same as \helpref{Set}{wxdatetimewxdatetimetm}

\pythonnote{Unsupported.}

\membersection{wxDateTime::wxDateTime}\label{wxdatetimewxdatetimejdn}

\func{wxDateTime\&}{wxDateTime}{\param{double }{jdn}}

Same as \helpref{Set}{wxdatetimewxdatetimejdn}

\pythonnote{This constructor is named {\tt wxDateTimeFromJDN} in wxPython.}

\membersection{wxDateTime::wxDateTime}\label{wxdatetimewxdatetimetime}

\func{wxDateTime\&}{wxDateTime}{\param{wxDateTime\_t }{hour}, \param{wxDateTime\_t }{minute = 0}, \param{wxDateTime\_t }{second = 0}, \param{wxDateTime\_t }{millisec = 0}}

Same as \helpref{Set}{wxdatetimewxdatetimetime}

\pythonnote{This constructor is named {\tt wxDateTimeFromHMS} in wxPython.}

\membersection{wxDateTime::wxDateTime}\label{wxdatetimewxdatetimedate}

\func{wxDateTime\&}{wxDateTime}{\param{wxDateTime\_t }{day}, \param{Month }{month = Inv\_Month}, \param{int}{ Inv\_Year}, 
\param{wxDateTime\_t }{hour = 0}, \param{wxDateTime\_t }{minute = 0}, \param{wxDateTime\_t }{second = 0}, \param{wxDateTime\_t }{millisec = 0}}

Same as \helpref{Set}{wxdatetimesetdate}

\pythonnote{This constructor is named {\tt wxDateTimeFromDMY} in wxPython.}

\membersection{wxDateTime::SetToCurrent}\label{wxdatetimesettocurrent}

\func{wxDateTime\&}{SetToCurrent}{\void}

Sets the date and time of to the current values. Same as assigning the result
of \helpref{Now()}{wxdatetimenow} to this object.

\membersection{wxDateTime::Set}\label{wxdatetimesettimet}

\func{wxDateTime\&}{Set}{\param{time\_t }{timet}}

Constructs the object from {\it timet} value holding the number of seconds
since Jan 1, 1970.

\pythonnote{This method is named {\tt SetTimeT} in wxPython.}

\membersection{wxDateTime::Set}\label{wxdatetimesettm}

\func{wxDateTime\&}{Set}{\param{const struct tm\& }{tm}}

Sets the date and time from the broken down representation in the standard
{\tt tm} structure.

\pythonnote{Unsupported.}

\membersection{wxDateTime::Set}\label{wxdatetimesetjdn}

\func{wxDateTime\&}{Set}{\param{double }{jdn}}

Sets the date from the so-called {\it Julian Day Number}.

By definition, the Julian Day Number, usually abbreviated as JDN, of a
particular instant is the fractional number of days since 12 hours Universal
Coordinated Time (Greenwich mean noon) on January 1 of the year -4712 in the
Julian proleptic calendar.

\pythonnote{This method is named {\tt SetJDN} in wxPython.}

\membersection{wxDateTime::Set}\label{wxdatetimesettime}

\func{wxDateTime\&}{Set}{\param{wxDateTime\_t }{hour}, \param{wxDateTime\_t }{minute = 0}, \param{wxDateTime\_t }{second = 0}, \param{wxDateTime\_t }{millisec = 0}}

Sets the date to be equal to \helpref{Today}{wxdatetimetoday} and the time
from supplied parameters.

\pythonnote{This method is named {\tt SetHMS} in wxPython.}

\membersection{wxDateTime::Set}\label{wxdatetimesetdate}

\func{wxDateTime\&}{Set}{\param{wxDateTime\_t }{day}, \param{Month }{month = Inv\_Month}, \param{int }{year = Inv\_Year}, \param{wxDateTime\_t }{hour = 0}, \param{wxDateTime\_t }{minute = 0}, \param{wxDateTime\_t }{second = 0}, \param{wxDateTime\_t }{millisec = 0}}

Sets the date and time from the parameters.

\membersection{wxDateTime::ResetTime}\label{wxdatetimeresettime}

\func{wxDateTime\&}{ResetTime}{\void}

Reset time to midnight (00:00:00) without changing the date.

\membersection{wxDateTime::SetYear}\label{wxdatetimesetyear}

\func{wxDateTime\&}{SetYear}{\param{int }{year}}

Sets the year without changing other date components.

\membersection{wxDateTime::SetMonth}\label{wxdatetimesetmonth}

\func{wxDateTime\&}{SetMonth}{\param{Month }{month}}

Sets the month without changing other date components.

\membersection{wxDateTime::SetDay}\label{wxdatetimesetday}

\func{wxDateTime\&}{SetDay}{\param{wxDateTime\_t }{day}}

Sets the day without changing other date components.

\membersection{wxDateTime::SetHour}\label{wxdatetimesethour}

\func{wxDateTime\&}{SetHour}{\param{wxDateTime\_t }{hour}}

Sets the hour without changing other date components.

\membersection{wxDateTime::SetMinute}\label{wxdatetimesetminute}

\func{wxDateTime\&}{SetMinute}{\param{wxDateTime\_t }{minute}}

Sets the minute without changing other date components.

\membersection{wxDateTime::SetSecond}\label{wxdatetimesetsecond}

\func{wxDateTime\&}{SetSecond}{\param{wxDateTime\_t }{second}}

Sets the second without changing other date components.

\membersection{wxDateTime::SetMillisecond}\label{wxdatetimesetmillisecond}

\func{wxDateTime\&}{SetMillisecond}{\param{wxDateTime\_t }{millisecond}}

Sets the millisecond without changing other date components.

\membersection{wxDateTime::operator$=$}\label{wxdatetimeoperatoreqtimet}

\func{wxDateTime\&}{operator}{\param{time\_t }{timet}}

Same as \helpref{Set}{wxdatetimesettimet}.

\membersection{wxDateTime::operator$=$}\label{wxdatetimeoperatoreqtm}

\func{wxDateTime\&}{operator}{\param{const struct tm\& }{tm}}

Same as \helpref{Set}{wxdatetimesettm}.

%%%%%%%%%%%%%%%%%%%%%%%%%%% accessors %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\membersection{wxDateTime::IsValid}\label{wxdatetimeisvalid}

\constfunc{bool}{IsValid}{\void}

Returns {\tt TRUE} if the object represents a valid time moment.

\membersection{wxDateTime::GetTm}\label{wxdatetimegettm}

\constfunc{Tm}{GetTm}{\param{const TimeZone\& }{tz = Local}}

Returns broken down representation of the date and time.

\membersection{wxDateTime::GetTicks}\label{wxdatetimegetticks}

\constfunc{time\_t}{GetTicks}{\void}

Returns the number of seconds since Jan 1, 1970. An assert failure will occur
if the date is not in the range covered by {\tt time\_t} type.

\membersection{wxDateTime::GetYear}\label{wxdatetimegetyear}

\constfunc{int}{GetYear}{\param{const TimeZone\& }{tz = Local}}

Returns the year in the given timezone (local one by default).

\membersection{wxDateTime::GetMonth}\label{wxdatetimegetmonth}

\constfunc{Month}{GetMonth}{\param{const TimeZone\& }{tz = Local}}

Returns the month in the given timezone (local one by default).

\membersection{wxDateTime::GetDay}\label{wxdatetimegetday}

\constfunc{wxDateTime\_t}{GetDay}{\param{const TimeZone\& }{tz = Local}}

Returns the day in the given timezone (local one by default).

\membersection{wxDateTime::GetWeekDay}\label{wxdatetimegetweekday}

\constfunc{WeekDay}{GetWeekDay}{\param{const TimeZone\& }{tz = Local}}

Returns the week day in the given timezone (local one by default).

\membersection{wxDateTime::GetHour}\label{wxdatetimegethour}

\constfunc{wxDateTime\_t}{GetHour}{\param{const TimeZone\& }{tz = Local}}

Returns the hour in the given timezone (local one by default).

\membersection{wxDateTime::GetMinute}\label{wxdatetimegetminute}

\constfunc{wxDateTime\_t}{GetMinute}{\param{const TimeZone\& }{tz = Local}}

Returns the minute in the given timezone (local one by default).

\membersection{wxDateTime::GetSecond}\label{wxdatetimegetsecond}

\constfunc{wxDateTime\_t}{GetSecond}{\param{const TimeZone\& }{tz = Local}}

Returns the seconds in the given timezone (local one by default).

\membersection{wxDateTime::GetMillisecond}\label{wxdatetimegetmillisecond}

\constfunc{wxDateTime\_t}{GetMillisecond}{\param{const TimeZone\& }{tz = Local}}

Returns the milliseconds in the given timezone (local one by default).

\membersection{wxDateTime::GetDayOfYear}\label{wxdatetimegetdayofyear}

\constfunc{wxDateTime\_t}{GetDayOfYear}{\param{const TimeZone\& }{tz = Local}}

Returns the day of the year (in $1\ldots366$ range) in the given timezone
(local one by default).

\membersection{wxDateTime::GetWeekOfYear}\label{wxdatetimegetweekofyear}

\constfunc{wxDateTime\_t}{GetWeekOfYear}{\param{WeekFlags }{flags = Monday\_First}, \param{const TimeZone\& }{tz = Local}}

Returns the number of the week of the year this date is in. The first week of
the year is, according to international standards, the one containing Jan 4.
The week number is in $1\ldots53$ range ($52$ for non leap years).

The function depends on the \helpref{week start}{wxdatetime} convention
specified by the {\it flags} argument.

\membersection{wxDateTime::GetWeekOfMonth}\label{wxdatetimegetweekofmonth}

\constfunc{wxDateTime\_t}{GetWeekOfMonth}{\param{WeekFlags }{flags = Monday\_First}, \param{const TimeZone\& }{tz = Local}}

Returns the ordinal number of the week in the month (in $1\ldots5$  range).

As \helpref{GetWeekOfYear}{wxdatetimegetweekofyear}, this function supports
both conventions for the week start. See the description of these
\helpref{week start}{wxdatetime} conventions.

\membersection{wxDateTime::IsWorkDay}\label{wxdatetimeisworkday}

\constfunc{bool}{IsWorkDay}{\param{Country }{country = Country\_Default}}

Returns {\tt TRUE} is this day is not a holiday in the given country.

\membersection{wxDateTime::IsGregorianDate}\label{wxdatetimeisgregoriandate}

\constfunc{bool}{IsGregorianDate}{\param{GregorianAdoption }{country = Gr\_Standard}}

Returns {\tt TRUE} if the given date os later than the date of adoption of the
Gregorian calendar in the given country (and hence the Gregorian calendar
calculations make sense for it).

%%%%%%%%%%%%%%%%%%%%%% dos date and time format %%%%%%%%%%%%%%%%%%%%%%%

\membersection{wxDateTime::SetFromDOS}\label{wxdatetimesetfromdos}

\func{wxDateTime\&}{Set}{\param{unsigned long }{ddt}}

Sets the date from the date and time in 
\urlref{DOS}{http://developer.novell.com/ndk/doc/smscomp/index.html?page=/ndk/doc/smscomp/sms\_docs/data/hc2vlu5i.html} 
format.

\membersection{wxDateTime::GetAsDOS}\label{wxdatetimegetasdos}

\constfunc{unsigned long}{GetAsDOS}{\void}

Returns the date and time in 
\urlref{DOS}{http://developer.novell.com/ndk/doc/smscomp/index.html?page=/ndk/doc/smscomp/sms\_docs/data/hc2vlu5i.html} 
format.

%%%%%%%%%%%%%%%%%%%%%%%%%%% comparison %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\membersection{wxDateTime::IsEqualTo}\label{wxdatetimeisequalto}

\constfunc{bool}{IsEqualTo}{\param{const wxDateTime\& }{datetime}}

Returns {\tt TRUE} if the two dates are strictly identical.

\membersection{wxDateTime::IsEarlierThan}\label{wxdatetimeisearlierthan}

\constfunc{bool}{IsEarlierThan}{\param{const wxDateTime\& }{datetime}}

Returns {\tt TRUE} if this date precedes the given one.

\membersection{wxDateTime::IsLaterThan}\label{wxdatetimeislaterthan}

\constfunc{bool}{IsLaterThan}{\param{const wxDateTime\& }{datetime}}

Returns {\tt TRUE} if this date is later than the given one.

\membersection{wxDateTime::IsStrictlyBetween}\label{wxdatetimeisstrictlybetween}

\constfunc{bool}{IsStrictlyBetween}{\param{const wxDateTime\& }{t1}, \param{const wxDateTime\& }{t2}}

Returns {\tt TRUE} if this date lies strictly between the two others,

\wxheading{See also}

\helpref{IsBetween}{wxdatetimeisbetween}

\membersection{wxDateTime::IsBetween}\label{wxdatetimeisbetween}

\constfunc{bool}{IsBetween}{\param{const wxDateTime\& }{t1}, \param{const wxDateTime\& }{t2}}

Returns {\tt TRUE} if \helpref{IsStrictlyBetween}{wxdatetimeisstrictlybetween}
is {\tt TRUE} or if the date is equal to one of the limit values.

\wxheading{See also}

\helpref{IsStrictlyBetween}{wxdatetimeisstrictlybetween}

\membersection{wxDateTime::IsSameDate}\label{wxdatetimeissamedate}

\constfunc{bool}{IsSameDate}{\param{const wxDateTime\& }{dt}}

Returns {\tt TRUE} if the date is the same without comparing the time parts.

\membersection{wxDateTime::IsSameTime}\label{wxdatetimeissametime}

\constfunc{bool}{IsSameTime}{\param{const wxDateTime\& }{dt}}

Returns {\tt TRUE} if the time is the same (although dates may differ).

\membersection{wxDateTime::IsEqualUpTo}\label{wxdatetimeisequalupto}

\constfunc{bool}{IsEqualUpTo}{\param{const wxDateTime\& }{dt}, \param{const wxTimeSpan\& }{ts}}

Returns {\tt TRUE} if the date is equal to another one up to the given time
interval, i.e. if the absolute difference between the two dates is less than
this interval.

%%%%%%%%%%%%%%%%%%%%%%%%%%% arithmetics %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\membersection{wxDateTime::Add}\label{wxdatetimeaddts}

\constfunc{wxDateTime}{Add}{\param{const wxTimeSpan\& }{diff}}

\func{wxDateTime\&}{Add}{\param{const wxTimeSpan\& }{diff}}

\func{wxDateTime\&}{operator$+=$}{\param{const wxTimeSpan\& }{diff}}

Adds the given time span to this object.

\pythonnote{This method is named {\tt AddTS} in wxPython.}

\membersection{wxDateTime::Subtract}\label{wxdatetimesubtractts}

\constfunc{wxDateTime}{Subtract}{\param{const wxTimeSpan\& }{diff}}

\func{wxDateTime\&}{Subtract}{\param{const wxTimeSpan\& }{diff}}

\func{wxDateTime\&}{operator$-=$}{\param{const wxTimeSpan\& }{diff}}

Subtracts the given time span from this object.

\pythonnote{This method is named {\tt SubtractTS} in wxPython.}

\membersection{wxDateTime::Add}\label{wxdatetimeaddds}

\constfunc{wxDateTime}{Add}{\param{const wxDateSpan\& }{diff}}

\func{wxDateTime\&}{Add}{\param{const wxDateSpan\& }{diff}}

\func{wxDateTime\&}{operator$+=$}{\param{const wxDateSpan\& }{diff}}

Adds the given date span to this object.

\pythonnote{This method is named {\tt AddDS} in wxPython.}

\membersection{wxDateTime::Subtract}\label{wxdatetimesubtractds}

\constfunc{wxDateTime}{Subtract}{\param{const wxDateSpan\& }{diff}}

\func{wxDateTime\&}{Subtract}{\param{const wxDateSpan\& }{diff}}

\func{wxDateTime\&}{operator$-=$}{\param{const wxDateSpan\& }{diff}}

Subtracts the given date span from this object.

\pythonnote{This method is named {\tt SubtractDS} in wxPython.}

\membersection{wxDateTime::Subtract}\label{wxdatetimesubtractdt}

\constfunc{wxTimeSpan}{Subtract}{\param{const wxDateTime\& }{dt}}

Subtracts another date from this one and returns the difference between them
as wxTimeSpan.

%%%%%%%%%%%%%%%%%%%%%%%%%%% parsing/formatting %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\membersection{wxDateTime::ParseRfc822Date}\label{wxdatetimeparserfc822date}

\func{const wxChar *}{ParseRfc822Date}{\param{const wxChar* }{date}}

Parses the string {\it date} looking for a date formatted according to the RFC
822 in it. The exact description of this format may, of course, be found in
the RFC (section $5$), but, briefly, this is the format used in the headers of
Internet email messages and one of the most common strings expressing date in
this format may be something like {\tt "Sat, 18 Dec 1999 00:48:30 +0100"}.

Returns {\tt NULL} if the conversion failed, otherwise return the pointer to
the character immediately following the part of the string which could be
parsed. If the entire string contains only the date in RFC 822 format,
the returned pointer will be pointing to a {\tt NUL} character.

This function is intentionally strict, it will return an error for any string
which is not RFC 822 compliant. If you need to parse date formatted in more
free ways, you should use \helpref{ParseDateTime}{wxdatetimeparsedatetime} or
\helpref{ParseDate}{wxdatetimeparsedate} instead.

\membersection{wxDateTime::ParseFormat}\label{wxdatetimeparseformat}

\func{const wxChar *}{ParseFormat}{\param{const wxChar *}{date}, \param{const wxChar *}{format = "\%c"}, \param{const wxDateTime\& }{dateDef = wxDefaultDateTime}}

This function parses the string {\it date} according to the given
{\it format}. The system {\tt strptime(3)} function is used whenever available,
but even if it is not, this function is still implemented (although support
for locale-dependent format specificators such as {\tt "\%c"}, {\tt "\%x"} or
{\tt "\%X"} may be not perfect). This function does handle the month and
weekday names in the current locale on all platforms, however.

Please the description of ANSI C function {\tt strftime(3)} for the syntax of
the format string.

The {\it dateDef} parameter is used to fill in the fields which could not be
determined from the format string. For example, if the format is {\tt "\%d"}
(the day of the month), the month and the year are taken from {\it dateDef}.
If it is not specified, \helpref{Today}{wxdatetimetoday} is used as the
default date.

Returns {\tt NULL} if the conversion failed, otherwise return the pointer to
the character which stopped the scan.

\membersection{wxDateTime::ParseDateTime}\label{wxdatetimeparsedatetime}

\func{const wxChar *}{ParseDateTime}{\param{const wxChar *}{datetime}}

Parses the string {\it datetime} containing the date and time in free format.
This function tries as hard as it can to interpret the given string as date
and time. Unlike \helpref{ParseRfc822Date}{wxdatetimeparserfc822date}, it
will accept anything that may be accepted and will only reject strings which
can not be parsed in any way at all.

Returns {\tt NULL} if the conversion failed, otherwise return the pointer to
the character which stopped the scan.

\membersection{wxDateTime::ParseDate}\label{wxdatetimeparsedate}

\func{const wxChar *}{ParseDate}{\param{const wxChar *}{date}}

This function is like \helpref{ParseDateTime}{wxdatetimeparsedatetime}, but it
only allows the date to be specified. It is thus less flexible then 
\helpref{ParseDateTime}{wxdatetimeparsedatetime}, but also has less chances to
misinterpret the user input.

Returns {\tt NULL} if the conversion failed, otherwise return the pointer to
the character which stopped the scan.

\membersection{wxDateTime::ParseTime}\label{wxdatetimeparsetime}

\func{const wxChar *}{ParseTime}{\param{const wxChar *}{time}}

This functions is like \helpref{ParseDateTime}{wxdatetimeparsedatetime}, but
only allows the time to be specified in the input string.

Returns {\tt NULL} if the conversion failed, otherwise return the pointer to
the character which stopped the scan.

\membersection{wxDateTime::Format}\label{wxdatetimeformat}

\constfunc{wxString }{Format}{\param{const wxChar *}{format = "\%c"}, \param{const TimeZone\& }{tz = Local}}

This function does the same as the standard ANSI C {\tt strftime(3)} function.
Please see its description for the meaning of {\it format} parameter.

It also accepts a few wxWidgets-specific extensions: you can optionally specify
the width of the field to follow using {\tt printf(3)}-like syntax and the
format specification {\tt \%l} can be used to get the number of milliseconds.

\wxheading{See also}

\helpref{ParseFormat}{wxdatetimeparseformat}

\membersection{wxDateTime::FormatDate}\label{wxdatetimeformatdate}

\constfunc{wxString }{FormatDate}{\void}

Identical to calling \helpref{Format()}{wxdatetimeformat} with {\tt "\%x"}
argument (which means `preferred date representation for the current locale').

\membersection{wxDateTime::FormatTime}\label{wxdatetimeformattime}

\constfunc{wxString }{FormatTime}{\void}

Identical to calling \helpref{Format()}{wxdatetimeformat} with {\tt "\%X"}
argument (which means `preferred time representation for the current locale').

\membersection{wxDateTime::FormatISODate}\label{wxdatetimeformatisodate}

\constfunc{wxString }{FormatISODate}{\void}

This function returns the date representation in the ISO 8601 format
(YYYY-MM-DD).

\membersection{wxDateTime::FormatISOTime}\label{wxdatetimeformatisotime}

\constfunc{wxString }{FormatISOTime}{\void}

This function returns the time representation in the ISO 8601 format
(HH:MM:SS).

%%%%%%%%%%%%%%%%%%%%%%%%%%% calendar calculations %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\membersection{wxDateTime::SetToWeekDayInSameWeek}\label{wxdatetimesettoweekdayinsameweek}

\func{wxDateTime\&}{SetToWeekDayInSameWeek}{\param{WeekDay }{weekday}, \param{WeekFlags}{flags = {\tt Monday\_First}}}

Adjusts the date so that it will still lie in the same week as before, but its
week day will be the given one.

Returns the reference to the modified object itself.

\membersection{wxDateTime::GetWeekDayInSameWeek}\label{wxdatetimegetweekdayinsameweek}

\constfunc{wxDateTime}{GetWeekDayInSameWeek}{\param{WeekDay }{weekday}, \param{WeekFlags}{flags = {\tt Monday\_First}}}

Returns the copy of this object to which 
\helpref{SetToWeekDayInSameWeek}{wxdatetimesettoweekdayinsameweek} was
applied.

\membersection{wxDateTime::SetToNextWeekDay}\label{wxdatetimesettonextweekday}

\func{wxDateTime\&}{SetToNextWeekDay}{\param{WeekDay }{weekday}}

Sets the date so that it will be the first {\it weekday} following the current
date.

Returns the reference to the modified object itself.

\membersection{wxDateTime::GetNextWeekDay}\label{wxdatetimegetnextweekday}

\constfunc{wxDateTime}{GetNextWeekDay}{\param{WeekDay }{weekday}}

Returns the copy of this object to which
\helpref{SetToNextWeekDay}{wxdatetimesettonextweekday} was applied.

\membersection{wxDateTime::SetToPrevWeekDay}\label{wxdatetimesettoprevweekday}

\func{wxDateTime\&}{SetToPrevWeekDay}{\param{WeekDay }{weekday}}

Sets the date so that it will be the last {\it weekday} before the current
date.

Returns the reference to the modified object itself.

\membersection{wxDateTime::GetPrevWeekDay}\label{wxdatetimegetprevweekday}

\constfunc{wxDateTime}{GetPrevWeekDay}{\param{WeekDay }{weekday}}

Returns the copy of this object to which
\helpref{SetToPrevWeekDay}{wxdatetimesettoprevweekday} was applied.

\membersection{wxDateTime::SetToWeekDay}\label{wxdatetimesettoweekday}

\func{bool}{SetToWeekDay}{\param{WeekDay }{weekday}, \param{int }{n = 1}, \param{Month }{month = Inv\_Month}, \param{int }{year = Inv\_Year}}

Sets the date to the {\it n}-th {\it weekday} in the given month of the given
year (the current month and year are used by default). The parameter {\it n}
may be either positive (counting from the beginning of the month) or negative
(counting from the end of it).

For example, {\tt SetToWeekDay(2, wxDateTime::Wed)} will set the date to the
second Wednesday in the current month and
{\tt SetToWeekDay(-1, wxDateTime::Sun)} -- to the last Sunday in it.

Returns {\tt TRUE} if the date was modified successfully, {\tt FALSE}
otherwise meaning that the specified date doesn't exist.

\membersection{wxDateTime::GetWeekDay}\label{wxdatetimegetweekday2}

\constfunc{wxDateTime}{GetWeekDay}{\param{WeekDay }{weekday}, \param{int }{n = 1}, \param{Month }{month = Inv\_Month}, \param{int }{year = Inv\_Year}}

Returns the copy of this object to which
\helpref{SetToWeekDay}{wxdatetimesettoweekday} was applied.

\membersection{wxDateTime::SetToLastWeekDay}\label{wxdatetimesettolastweekday}

\func{bool}{SetToLastWeekDay}{\param{WeekDay }{weekday}, \param{Month }{month = Inv\_Month}, \param{int }{year = Inv\_Year}}

The effect of calling this function is the same as of calling
{\tt SetToWeekDay(-1, weekday, month, year)}. The date will be set to the last
{\it weekday} in the given month and year (the current ones by default).

Always returns {\tt TRUE}.

\membersection{wxDateTime::GetLastWeekDay}\label{wxdatetimegetlastweekday}

\func{wxDateTime}{GetLastWeekDay}{\param{WeekDay }{weekday}, \param{Month }{month = Inv\_Month}, \param{int }{year = Inv\_Year}}

Returns the copy of this object to which
\helpref{SetToLastWeekDay}{wxdatetimesettolastweekday} was applied.

\membersection{wxDateTime::SetToTheWeek}\label{wxdatetimesettotheweek}

\func{bool}{SetToTheWeek}{\param{wxDateTime\_t }{numWeek}, \param{WeekDay }{weekday = Mon}, \param{WeekFlags}{flags = {\tt Monday\_First}}}

Set the date to the given {\it weekday} in the week with given number
{\it numWeek}. The number should be in range $1\ldots53$ and {\tt FALSE} will
be returned if the specified date doesn't exist. {\tt TRUE} is returned if the
date was changed successfully.

\membersection{wxDateTime::GetWeek}\label{wxdatetimegetweek}

\constfunc{wxDateTime}{GetWeek}{\param{wxDateTime\_t }{numWeek}, \param{WeekDay }{weekday = Mon}, \param{WeekFlags}{flags = {\tt Monday\_First}}}

Returns the copy of this object to which
\helpref{SetToTheWeek}{wxdatetimesettotheweek} was applied.

\membersection{wxDateTime::SetToLastMonthDay}\label{wxdatetimesettolastmonthday}

\func{wxDateTime\&}{SetToLastMonthDay}{\param{Month }{month = Inv\_Month}, \param{int }{year = Inv\_Year}}

Sets the date to the last day in the specified month (the current one by
default).

Returns the reference to the modified object itself.

\membersection{wxDateTime::GetLastMonthDay}\label{wxdatetimegetlastmonthday}

\constfunc{wxDateTime}{GetLastMonthDay}{\param{Month }{month = Inv\_Month}, \param{int }{year = Inv\_Year}}

Returns the copy of this object to which
\helpref{SetToLastMonthDay}{wxdatetimesettolastmonthday} was applied.

\membersection{wxDateTime::SetToYearDay}\label{wxdatetimesettoyearday}

\func{wxDateTime\&}{SetToYearDay}{\param{wxDateTime\_t }{yday}}

Sets the date to the day number {\it yday} in the same year (i.e., unlike the
other functions, this one does not use the current year). The day number
should be in the range $1\ldots366$ for the leap years and $1\ldots365$ for
the other ones.

Returns the reference to the modified object itself.

\membersection{wxDateTime::GetYearDay}\label{wxdatetimegetyearday}

\constfunc{wxDateTime}{GetYearDay}{\param{wxDateTime\_t }{yday}}

Returns the copy of this object to which
\helpref{SetToYearDay}{wxdatetimesettoyearday} was applied.

%%%%%%%%%%%%%%%%%%%%%%%%%%% astronomical functions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\membersection{wxDateTime::GetJulianDayNumber}\label{wxdatetimegetjuliandaynumber}

\constfunc{double}{GetJulianDayNumber}{\void}

Returns the \helpref{JDN}{wxdatetimesetjdn} corresponding to this date. Beware
of rounding errors!

\wxheading{See also}

\helpref{GetModifiedJulianDayNumber}{wxdatetimegetmodifiedjuliandaynumber}

\membersection{wxDateTime::GetJDN}\label{wxdatetimegetjdn}

\constfunc{double}{GetJDN}{\void}

Synonym for \helpref{GetJulianDayNumber}{wxdatetimegetjuliandaynumber}.

\membersection{wxDateTime::GetModifiedJulianDayNumber}\label{wxdatetimegetmodifiedjuliandaynumber}

\constfunc{double}{GetModifiedJulianDayNumber}{\void}

Returns the {\it Modified Julian Day Number} (MJD) which is, by definition,
equal to $JDN - 2400000.5$. The MJDs are simpler to work with as the integral
MJDs correspond to midnights of the dates in the Gregorian calendar and not th
noons like JDN. The MJD $0$ is Nov 17, 1858.

\membersection{wxDateTime::GetMJD}\label{wxdatetimegetmjd}

\constfunc{double}{GetMJD}{\void}

Synonym for \helpref{GetModifiedJulianDayNumber}{wxdatetimegetmodifiedjuliandaynumber}.

\membersection{wxDateTime::GetRataDie}\label{wxdatetimegetratadie}

\constfunc{double}{GetRataDie}{\void}

Return the {\it Rata Die number} of this date.

By definition, the Rata Die number is a date specified as the number of days
relative to a base date of December 31 of the year 0. Thus January 1 of the
year 1 is Rata Die day 1.

%%%%%%%%%%%%%%%%%%%%%%%%%%% timezone and DST %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\membersection{wxDateTime::ToTimezone}\label{wxdatetimetotimezone}

\constfunc{wxDateTime}{ToTimezone}{\param{const TimeZone\& }{tz}, \param{bool }{noDST = FALSE}}

Transform the date to the given time zone. If {\it noDST} is {\tt TRUE}, no
DST adjustments will be made.

Returns the date in the new time zone.

\membersection{wxDateTime::MakeTimezone}\label{wxdatetimemaketimezone}

\func{wxDateTime\&}{MakeTimezone}{\param{const TimeZone\& }{tz}, \param{bool }{noDST = FALSE}}

Modifies the object in place to represent the date in another time zone. If
{\it noDST} is {\tt TRUE}, no DST adjustments will be made.

\membersection{wxDateTime::ToGMT}\label{wxdatetimetogmt}

\constfunc{wxDateTime}{ToGMT}{\param{bool }{noDST = FALSE}}

This is the same as calling \helpref{ToTimezone}{wxdatetimetotimezone} with
the argument {\tt GMT0}.

\membersection{wxDateTime::MakeGMT}\label{wxdatetimemakegmt}

\func{wxDateTime\&}{MakeGMT}{\param{bool }{noDST = FALSE}}

This is the same as calling \helpref{MakeTimezone}{wxdatetimemaketimezone} with
the argument {\tt GMT0}.

\membersection{wxDateTime::IsDST}\label{wxdatetimeisdst}

\constfunc{int}{IsDST}{\param{Country }{country = Country\_Default}}

Returns {\tt TRUE} if the DST is applied for this date in the given country.

\wxheading{See also}

\helpref{GetBeginDST}{wxdatetimegetbegindst} and
\helpref{GetEndDST}{wxdatetimegetenddst}

\section{\class{wxDateTimeHolidayAuthority}}\label{wxdatetimeholidayauthority}

TODO

\section{\class{wxDateTimeWorkDays}}\label{wxdatetimeworkdays}

TODO

