## wxDateTime

wxDateTime class represents an absolute moment in the time.

Types

The type `wxDateTime_t` is typedefed as `unsigned short` and is used to contain the number of years, hours, minutes, seconds and milliseconds.

Constants

Global constant `wxDefaultDateTime` and synonym for it `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 `wxDateTime::`).

Time zone symbolic names:

        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
        };

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 `wxDateTime::Month` enum.

Likewise, Sun, Mon, Tue, Wed, Thu, Fri, Sat, and Inv_WeekDay are the values in `wxDateTime::WeekDay` enum.

Finally, Inv_Year is defined to be an invalid value for year parameter.

GetMonthName() and GetWeekDayName functions use the following flags:

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

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:

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

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

        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
        };

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 (GetWeekOfYear and GetWeekOfMonth).

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

        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
        };

Derived from

No base class

Include files

<wx/datetime.h>

See also

Date classes overview, wxTimeSpan, wxDateSpan, wxCalendarCtrl

Function groups

Static functions
Constructors, assignment operators and setters
Accessors
Date comparison
Date arithmetics
Parsing and formatting dates
Calendar calculations
Astronomical/historical functions
Time zone and DST support
wxDateTime::ConvertYearToBC
wxDateTime::GetAmPmStrings
wxDateTime::GetBeginDST
wxDateTime::GetCountry
wxDateTime::GetCurrentYear
wxDateTime::GetCurrentMonth
wxDateTime::GetCentury
wxDateTime::GetEndDST
wxDateTime::GetMonthName
wxDateTime::GetNumberOfDays
wxDateTime::GetTimeNow
wxDateTime::GetTmNow
wxDateTime::GetWeekDayName
wxDateTime::IsLeapYear
wxDateTime::IsWestEuropeanCountry
wxDateTime::IsDSTApplicable
wxDateTime::Now
wxDateTime::SetCountry
wxDateTime::Today
wxDateTime::UNow
wxDateTime::wxDateTime
wxDateTime::wxDateTime
wxDateTime::wxDateTime
wxDateTime::wxDateTime
wxDateTime::wxDateTime
wxDateTime::wxDateTime
wxDateTime::SetToCurrent
wxDateTime::Set
wxDateTime::Set
wxDateTime::Set
wxDateTime::Set
wxDateTime::Set
wxDateTime::ResetTime
wxDateTime::SetYear
wxDateTime::SetMonth
wxDateTime::SetDay
wxDateTime::SetHour
wxDateTime::SetMinute
wxDateTime::SetSecond
wxDateTime::SetMillisecond
wxDateTime::operator=
wxDateTime::operator=
wxDateTime::IsValid
wxDateTime::GetTm
wxDateTime::GetTicks
wxDateTime::GetYear
wxDateTime::GetMonth
wxDateTime::GetDay
wxDateTime::GetWeekDay
wxDateTime::GetHour
wxDateTime::GetMinute
wxDateTime::GetSecond
wxDateTime::GetMillisecond
wxDateTime::GetDayOfYear
wxDateTime::GetWeekOfYear
wxDateTime::GetWeekOfMonth
wxDateTime::IsWorkDay
wxDateTime::IsGregorianDate
wxDateTime::SetFromDOS
wxDateTime::GetAsDOS
wxDateTime::IsEqualTo
wxDateTime::IsEarlierThan
wxDateTime::IsLaterThan
wxDateTime::IsStrictlyBetween
wxDateTime::IsBetween
wxDateTime::IsSameDate
wxDateTime::IsSameTime
wxDateTime::IsEqualUpTo
wxDateTime::Add
wxDateTime::Add
wxDateTime::Subtract
wxDateTime::Subtract
wxDateTime::Subtract
wxDateTime::ParseRfc822Date
wxDateTime::ParseFormat
wxDateTime::ParseDateTime
wxDateTime::ParseDate
wxDateTime::ParseTime
wxDateTime::Format
wxDateTime::FormatDate
wxDateTime::FormatTime
wxDateTime::FormatISODate
wxDateTime::FormatISOTime
wxDateTime::SetToWeekDayInSameWeek
wxDateTime::GetWeekDayInSameWeek
wxDateTime::SetToNextWeekDay
wxDateTime::GetNextWeekDay
wxDateTime::SetToPrevWeekDay
wxDateTime::GetPrevWeekDay
wxDateTime::SetToWeekDay
wxDateTime::GetWeekDay
wxDateTime::SetToLastWeekDay
wxDateTime::GetLastWeekDay
wxDateTime::SetToWeekOfYear
wxDateTime::SetToLastMonthDay
wxDateTime::GetLastMonthDay
wxDateTime::SetToYearDay
wxDateTime::GetYearDay
wxDateTime::GetJulianDayNumber
wxDateTime::GetJDN
wxDateTime::GetModifiedJulianDayNumber
wxDateTime::GetMJD
wxDateTime::GetRataDie
wxDateTime::ToTimezone
wxDateTime::MakeTimezone
wxDateTime::ToGMT
wxDateTime::MakeGMT
wxDateTime::IsDST

### 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 Calendar parameter, it is currently ignored as only the Gregorian calendar is supported. Future versions will support other calendars.

wxPython note: These methods are standalone functions named `wxDateTime_<StaticMethodName>` in wxPython.

SetCountry
GetCountry
IsWestEuropeanCountry
GetCurrentYear
ConvertYearToBC
GetCurrentMonth
IsLeapYear
GetCentury
GetNumberOfDays
GetNumberOfDays
GetMonthName
GetWeekDayName
GetAmPmStrings
IsDSTApplicable
GetBeginDST
GetEndDST
Now
UNow
Today

### Constructors, assignment operators and setters

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

wxDateTime()
wxDateTime(time_t)
wxDateTime(struct tm)
wxDateTime(double jdn)
wxDateTime(h, m, s, ms)
wxDateTime(day, mon, year, h, m, s, ms)
SetToCurrent
Set(time_t)
Set(struct tm)
Set(double jdn)
Set(h, m, s, ms)
Set(day, mon, year, h, m, s, ms)
SetFromDOS(unsigned long ddt)
ResetTime
SetYear
SetMonth
SetDay
SetHour
SetMinute
SetSecond
SetMillisecond
operator=(time_t)
operator=(struct tm)

### Accessors

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

IsValid
GetTicks
GetYear
GetMonth
GetDay
GetWeekDay
GetHour
GetMinute
GetSecond
GetMillisecond
GetDayOfYear
GetWeekOfYear
GetWeekOfMonth
GetYearDay
IsWorkDay
IsGregorianDate
GetAsDOS

### Date comparison

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

IsEqualTo
IsEarlierThan
IsLaterThan
IsStrictlyBetween
IsBetween
IsSameDate
IsSameTime
IsEqualUpTo

### Date arithmetics

These functions carry out arithmetics 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 `Add()` and `Subtract()` have both const and non-const version. The first one returns a new object 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.

Add(wxTimeSpan)
Add(wxDateSpan)
Subtract(wxTimeSpan)
Subtract(wxDateSpan)
Subtract(wxDateTime)
oparator+=(wxTimeSpan)
oparator+=(wxDateSpan)
oparator-=(wxTimeSpan)
oparator-=(wxDateSpan)

### Parsing and formatting dates

These functions convert wxDateTime objects 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 ( FormatDate and FormatTime), using the international standard representation defined by ISO 8601 ( FormatISODate and FormatISOTime) or by specifying any format at all and using Format 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 ParseFormat which can parse any date in the given (rigid) format. ParseRfc822Date 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 `strptime(3)`-like format strings used by Format, hence the need for a separate function.

But the most interesting functions are ParseTime, ParseDate and ParseDateTime. 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, ParseDateTime can parse the strings such as `"tomorrow"`, `"March first"` and even `"next Sunday"`.

ParseRfc822Date
ParseFormat
ParseDateTime
ParseDate
ParseTime
Format
FormatDate
FormatTime
FormatISODate
FormatISOTime

### Calendar calculations

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.

SetToWeekDayInSameWeek
GetWeekDayInSameWeek
SetToNextWeekDay
GetNextWeekDay
SetToPrevWeekDay
GetPrevWeekDay
SetToWeekDay
GetWeekDay
SetToLastWeekDay
GetLastWeekDay
SetToWeekOfYear
SetToLastMonthDay
GetLastMonthDay
SetToYearDay
GetYearDay

### 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 JDN and you may also get its JDN, MJD or Rata Die number from it.

wxDateTime(double jdn)
Set(double jdn)
GetJulianDayNumber
GetJDN
GetModifiedJulianDayNumber
GetMJD
GetRataDie

### Time zone and DST support

Please see the time zone overview for more information about time zones. Normally, these functions should be rarely used.

ToTimezone
MakeTimezone
ToGMT
MakeGMT
GetBeginDST
GetEndDST
IsDST

### wxDateTime::ConvertYearToBC

static int ConvertYearToBC(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:

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

### wxDateTime::GetAmPmStrings

static void GetAmPmStrings(wxString *am, wxString *pm)

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

### wxDateTime::GetBeginDST

static wxDateTime GetBeginDST(int year = Inv_Year, 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 DST overview.

See also

GetEndDST

### wxDateTime::GetCountry

static Country GetCountry()

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

See also

SetCountry

### wxDateTime::GetCurrentYear

static int GetCurrentYear(Calendar cal = Gregorian)

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

### wxDateTime::GetCurrentMonth

static Month GetCurrentMonth(Calendar cal = Gregorian)

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

### wxDateTime::GetCentury

static int GetCentury(int year = Inv_Year)

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

### wxDateTime::GetEndDST

static wxDateTime GetEndDST(int year = Inv_Year, Country country = Country_Default)

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

See also

GetBeginDST

### wxDateTime::GetMonthName

static wxString GetMonthName(Month month, NameFlags flags = Name_Full)

Gets the full (default) or abbreviated (specify `Name_Abbr` name of the given month.

See also

GetWeekDayName

### wxDateTime::GetNumberOfDays

static wxDateTime_t GetNumberOfDays(int year, Calendar cal = Gregorian)

static wxDateTime_t GetNumberOfDays(Month month, int year = Inv_Year, 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 cal parameter is currently `Gregorian`.

wxPython note: These two methods are named `GetNumberOfDaysInYear` and `GetNumberOfDaysInMonth` in wxPython.

### wxDateTime::GetTimeNow

static time_t GetTimeNow()

Returns the current time.

### wxDateTime::GetTmNow

static struct tm * GetTmNow()

Returns the current time broken down.

### wxDateTime::GetWeekDayName

static wxString GetWeekDayName(WeekDay weekday, NameFlags flags = Name_Full)

Gets the full (default) or abbreviated (specify `Name_Abbr` name of the given week day.

See also

GetMonthName

### wxDateTime::IsLeapYear

static bool IsLeapYear(int year = Inv_Year, Calendar cal = Gregorian)

Returns `true` if the year is a leap one in the specified calendar.

This functions supports Gregorian and Julian calendars.

### wxDateTime::IsWestEuropeanCountry

static bool IsWestEuropeanCountry(Country country = Country_Default)

This function returns `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.

### wxDateTime::IsDSTApplicable

static bool IsDSTApplicable(int year = Inv_Year, Country country = Country_Default)

Returns `true` if DST was used n the given year (the current one by default) in the given country.

### wxDateTime::Now

static wxDateTime Now()

Returns the object corresponding to the current time.

Example:

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

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

See also

Today

### wxDateTime::SetCountry

static void SetCountry(Country country)

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

The possible values for country parameter are enumerated in wxDateTime constants section.

See also

GetCountry

### wxDateTime::Today

static wxDateTime Today()

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

See also

Now

### wxDateTime::UNow

static wxDateTime UNow()

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).

See also

Now

### wxDateTime::wxDateTime

wxDateTime()

Default constructor. Use one of `Set()` functions to initialize the object later.

### wxDateTime::wxDateTime

wxDateTime& wxDateTime(time_t timet)

Same as Set.

wxPython note: This constructor is named `wxDateTimeFromTimeT` in wxPython.

### wxDateTime::wxDateTime

wxDateTime& wxDateTime(const struct tm& tm)

Same as Set

wxPython note: Unsupported.

### wxDateTime::wxDateTime

wxDateTime& wxDateTime(double jdn)

Same as Set

wxPython note: This constructor is named `wxDateTimeFromJDN` in wxPython.

### wxDateTime::wxDateTime

wxDateTime& wxDateTime(wxDateTime_t hour, wxDateTime_t minute = 0, wxDateTime_t second = 0, wxDateTime_t millisec = 0)

Same as Set

wxPython note: This constructor is named `wxDateTimeFromHMS` in wxPython.

### wxDateTime::wxDateTime

wxDateTime& wxDateTime(wxDateTime_t day, Month month = Inv_Month, int Inv_Year, wxDateTime_t hour = 0, wxDateTime_t minute = 0, wxDateTime_t second = 0, wxDateTime_t millisec = 0)

Same as Set

wxPython note: This constructor is named `wxDateTimeFromDMY` in wxPython.

### wxDateTime::SetToCurrent

wxDateTime& SetToCurrent()

Sets the date and time of to the current values. Same as assigning the result of Now() to this object.

### wxDateTime::Set

wxDateTime& Set(time_t timet)

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

wxPython note: This method is named `SetTimeT` in wxPython.

### wxDateTime::Set

wxDateTime& Set(const struct tm& tm)

Sets the date and time from the broken down representation in the standard `tm` structure.

wxPython note: Unsupported.

### wxDateTime::Set

wxDateTime& Set(double jdn)

Sets the date from the so-called 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.

wxPython note: This method is named `SetJDN` in wxPython.

### wxDateTime::Set

wxDateTime& Set(wxDateTime_t hour, wxDateTime_t minute = 0, wxDateTime_t second = 0, wxDateTime_t millisec = 0)

Sets the date to be equal to Today and the time from supplied parameters.

wxPython note: This method is named `SetHMS` in wxPython.

### wxDateTime::Set

wxDateTime& Set(wxDateTime_t day, Month month = Inv_Month, int year = Inv_Year, wxDateTime_t hour = 0, wxDateTime_t minute = 0, wxDateTime_t second = 0, wxDateTime_t millisec = 0)

Sets the date and time from the parameters.

### wxDateTime::ResetTime

wxDateTime& ResetTime()

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

### wxDateTime::SetYear

wxDateTime& SetYear(int year)

Sets the year without changing other date components.

### wxDateTime::SetMonth

wxDateTime& SetMonth(Month month)

Sets the month without changing other date components.

### wxDateTime::SetDay

wxDateTime& SetDay(wxDateTime_t day)

Sets the day without changing other date components.

### wxDateTime::SetHour

wxDateTime& SetHour(wxDateTime_t hour)

Sets the hour without changing other date components.

### wxDateTime::SetMinute

wxDateTime& SetMinute(wxDateTime_t minute)

Sets the minute without changing other date components.

### wxDateTime::SetSecond

wxDateTime& SetSecond(wxDateTime_t second)

Sets the second without changing other date components.

### wxDateTime::SetMillisecond

wxDateTime& SetMillisecond(wxDateTime_t millisecond)

Sets the millisecond without changing other date components.

### wxDateTime::operator=

wxDateTime& operator(time_t timet)

Same as Set.

### wxDateTime::operator=

wxDateTime& operator(const struct tm& tm)

Same as Set.

### wxDateTime::IsValid

bool IsValid() const

Returns `true` if the object represents a valid time moment.

### wxDateTime::GetTm

Tm GetTm(const TimeZone& tz = Local) const

Returns broken down representation of the date and time.

### wxDateTime::GetTicks

time_t GetTicks() const

Returns the number of seconds since Jan 1, 1970. An assert failure will occur if the date is not in the range covered by `time_t` type.

### wxDateTime::GetYear

int GetYear(const TimeZone& tz = Local) const

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

### wxDateTime::GetMonth

Month GetMonth(const TimeZone& tz = Local) const

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

### wxDateTime::GetDay

wxDateTime_t GetDay(const TimeZone& tz = Local) const

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

### wxDateTime::GetWeekDay

WeekDay GetWeekDay(const TimeZone& tz = Local) const

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

### wxDateTime::GetHour

wxDateTime_t GetHour(const TimeZone& tz = Local) const

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

### wxDateTime::GetMinute

wxDateTime_t GetMinute(const TimeZone& tz = Local) const

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

### wxDateTime::GetSecond

wxDateTime_t GetSecond(const TimeZone& tz = Local) const

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

### wxDateTime::GetMillisecond

wxDateTime_t GetMillisecond(const TimeZone& tz = Local) const

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

### wxDateTime::GetDayOfYear

wxDateTime_t GetDayOfYear(const TimeZone& tz = Local) const

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

### wxDateTime::GetWeekOfYear

wxDateTime_t GetWeekOfYear(WeekFlags flags = Monday_First, const TimeZone& tz = Local) const

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 or, equivalently, the first week which has Thursday in this year. Both of these definitions are the same as saying that the first week of the year must contain more than half of its days in this year. Accordingly, the week number will always be in 1...53 range (52 for non leap years).

The function depends on the week start convention specified by the flags argument but its results for `Sunday_First` are not well-defined as the ISO definition quoted above applies to the weeks starting on Monday only.

### wxDateTime::GetWeekOfMonth

wxDateTime_t GetWeekOfMonth(WeekFlags flags = Monday_First, const TimeZone& tz = Local) const

Returns the ordinal number of the week in the month (in 1...5 range).

As GetWeekOfYear, this function supports both conventions for the week start. See the description of these week start conventions.

### wxDateTime::IsWorkDay

bool IsWorkDay(Country country = Country_Default) const

Returns `true` is this day is not a holiday in the given country.

### wxDateTime::IsGregorianDate

bool IsGregorianDate(GregorianAdoption country = Gr_Standard) const

Returns `true` if the given date is later than the date of adoption of the Gregorian calendar in the given country (and hence the Gregorian calendar calculations make sense for it).

### wxDateTime::SetFromDOS

wxDateTime& Set(unsigned long ddt)

Sets the date from the date and time in DOS format.

### wxDateTime::GetAsDOS

unsigned long GetAsDOS() const

Returns the date and time in DOS format.

### wxDateTime::IsEqualTo

bool IsEqualTo(const wxDateTime& datetime) const

Returns `true` if the two dates are strictly identical.

### wxDateTime::IsEarlierThan

bool IsEarlierThan(const wxDateTime& datetime) const

Returns `true` if this date precedes the given one.

### wxDateTime::IsLaterThan

bool IsLaterThan(const wxDateTime& datetime) const

Returns `true` if this date is later than the given one.

### wxDateTime::IsStrictlyBetween

bool IsStrictlyBetween(const wxDateTime& t1, const wxDateTime& t2) const

Returns `true` if this date lies strictly between the two others,

See also

IsBetween

### wxDateTime::IsBetween

bool IsBetween(const wxDateTime& t1, const wxDateTime& t2) const

Returns `true` if IsStrictlyBetween is `true` or if the date is equal to one of the limit values.

See also

IsStrictlyBetween

### wxDateTime::IsSameDate

bool IsSameDate(const wxDateTime& dt) const

Returns `true` if the date is the same without comparing the time parts.

### wxDateTime::IsSameTime

bool IsSameTime(const wxDateTime& dt) const

Returns `true` if the time is the same (although dates may differ).

### wxDateTime::IsEqualUpTo

bool IsEqualUpTo(const wxDateTime& dt, const wxTimeSpan& ts) const

Returns `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.

### wxDateTime::Add

wxDateTime Add(const wxTimeSpan& diff) const

wxDateTime& Add(const wxTimeSpan& diff)

wxDateTime& operator+=(const wxTimeSpan& diff)

Adds the given time span to this object.

wxPython note: This method is named `AddTS` in wxPython.

### wxDateTime::Add

wxDateTime Add(const wxDateSpan& diff) const

wxDateTime& Add(const wxDateSpan& diff)

wxDateTime& operator+=(const wxDateSpan& diff)

Adds the given date span to this object.

wxPython note: This method is named `AddDS` in wxPython.

### wxDateTime::Subtract

wxDateTime Subtract(const wxTimeSpan& diff) const

wxDateTime& Subtract(const wxTimeSpan& diff)

wxDateTime& operator-=(const wxTimeSpan& diff)

Subtracts the given time span from this object.

wxPython note: This method is named `SubtractTS` in wxPython.

### wxDateTime::Subtract

wxDateTime Subtract(const wxDateSpan& diff) const

wxDateTime& Subtract(const wxDateSpan& diff)

wxDateTime& operator-=(const wxDateSpan& diff)

Subtracts the given date span from this object.

wxPython note: This method is named `SubtractDS` in wxPython.

### wxDateTime::Subtract

wxTimeSpan Subtract(const wxDateTime& dt) const

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

### wxDateTime::ParseRfc822Date

const wxChar * ParseRfc822Date(const wxChar* date)

Parses the string 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 `"Sat, 18 Dec 1999 00:48:30 +0100"`.

Returns `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 `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 ParseDateTime or ParseDate instead.

### wxDateTime::ParseFormat

const wxChar * ParseFormat(const wxChar *date, const wxChar *format = wxDefaultDateTimeFormat, const wxDateTime& dateDef = wxDefaultDateTime)

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

Please see the description of the ANSI C function `strftime(3)` for the syntax of the format string.

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

Returns `NULL` if the conversion failed, otherwise return the pointer to the character which stopped the scan.

### wxDateTime::ParseDateTime

const wxChar * ParseDateTime(const wxChar *datetime)

Parses the string 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 ParseRfc822Date, it will accept anything that may be accepted and will only reject strings which can not be parsed in any way at all.

Returns `NULL` if the conversion failed, otherwise return the pointer to the character which stopped the scan. This method is currently not implemented, so always returns NULL.

### wxDateTime::ParseDate

const wxChar * ParseDate(const wxChar *date)

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

Returns `NULL` if the conversion failed, otherwise return the pointer to the character which stopped the scan.

### wxDateTime::ParseTime

const wxChar * ParseTime(const wxChar *time)

This functions is like ParseDateTime, but only allows the time to be specified in the input string.

Returns `NULL` if the conversion failed, otherwise return the pointer to the character which stopped the scan.

### wxDateTime::Format

wxString Format(const wxChar *format = wxDefaultDateTimeFormat, const TimeZone& tz = Local) const

This function does the same as the standard ANSI C `strftime(3)` function. Please see its description for the meaning of format parameter.

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

See also

ParseFormat

### wxDateTime::FormatDate

wxString FormatDate() const

Identical to calling Format() with `"%x"` argument (which means 'preferred date representation for the current locale').

### wxDateTime::FormatTime

wxString FormatTime() const

Identical to calling Format() with `"%X"` argument (which means 'preferred time representation for the current locale').

### wxDateTime::FormatISODate

wxString FormatISODate() const

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

### wxDateTime::FormatISOTime

wxString FormatISOTime() const

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

### wxDateTime::SetToWeekDayInSameWeek

wxDateTime& SetToWeekDayInSameWeek(WeekDay weekday, WeekFlags flags = `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.

### wxDateTime::GetWeekDayInSameWeek

wxDateTime GetWeekDayInSameWeek(WeekDay weekday, WeekFlags flags = `Monday_First`) const

Returns the copy of this object to which SetToWeekDayInSameWeek was applied.

### wxDateTime::SetToNextWeekDay

wxDateTime& SetToNextWeekDay(WeekDay weekday)

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

Returns the reference to the modified object itself.

### wxDateTime::GetNextWeekDay

wxDateTime GetNextWeekDay(WeekDay weekday) const

Returns the copy of this object to which SetToNextWeekDay was applied.

### wxDateTime::SetToPrevWeekDay

wxDateTime& SetToPrevWeekDay(WeekDay weekday)

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

Returns the reference to the modified object itself.

### wxDateTime::GetPrevWeekDay

wxDateTime GetPrevWeekDay(WeekDay weekday) const

Returns the copy of this object to which SetToPrevWeekDay was applied.

### wxDateTime::SetToWeekDay

bool SetToWeekDay(WeekDay weekday, int n = 1, Month month = Inv_Month, int year = Inv_Year)

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

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

Returns `true` if the date was modified successfully, `false` otherwise meaning that the specified date doesn't exist.

### wxDateTime::GetWeekDay

wxDateTime GetWeekDay(WeekDay weekday, int n = 1, Month month = Inv_Month, int year = Inv_Year) const

Returns the copy of this object to which SetToWeekDay was applied.

### wxDateTime::SetToLastWeekDay

bool SetToLastWeekDay(WeekDay weekday, Month month = Inv_Month, int year = Inv_Year)

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

Always returns `true`.

### wxDateTime::GetLastWeekDay

wxDateTime GetLastWeekDay(WeekDay weekday, Month month = Inv_Month, int year = Inv_Year)

Returns the copy of this object to which SetToLastWeekDay was applied.

### wxDateTime::SetToWeekOfYear

static wxDateTime SetToWeekOfYear(int year, wxDateTime_t numWeek, WeekDay weekday = Mon)

Set the date to the given weekday in the week number numWeek of the given year . The number should be in range 1...53.

Note that the returned date may be in a different year than the one passed to this function because both the week 1 and week 52 or 53 (for leap years) contain days from different years. See GetWeekOfYear for the explanation of how the year weeks are counted.

### wxDateTime::SetToLastMonthDay

wxDateTime& SetToLastMonthDay(Month month = Inv_Month, 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.

### wxDateTime::GetLastMonthDay

wxDateTime GetLastMonthDay(Month month = Inv_Month, int year = Inv_Year) const

Returns the copy of this object to which SetToLastMonthDay was applied.

### wxDateTime::SetToYearDay

wxDateTime& SetToYearDay(wxDateTime_t yday)

Sets the date to the day number 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...366 for the leap years and 1...365 for the other ones.

Returns the reference to the modified object itself.

### wxDateTime::GetYearDay

wxDateTime GetYearDay(wxDateTime_t yday) const

Returns the copy of this object to which SetToYearDay was applied.

### wxDateTime::GetJulianDayNumber

double GetJulianDayNumber() const

Returns the JDN corresponding to this date. Beware of rounding errors!

See also

GetModifiedJulianDayNumber

### wxDateTime::GetJDN

double GetJDN() const

Synonym for GetJulianDayNumber.

### wxDateTime::GetModifiedJulianDayNumber

double GetModifiedJulianDayNumber() const

Returns the 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.

### wxDateTime::GetMJD

double GetMJD() const

Synonym for GetModifiedJulianDayNumber.

### wxDateTime::GetRataDie

double GetRataDie() const

Return the 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.

### wxDateTime::ToTimezone

wxDateTime ToTimezone(const TimeZone& tz, bool noDST = false) const

Transform the date to the given time zone. If noDST is `true`, no DST adjustments will be made.

Returns the date in the new time zone.

### wxDateTime::MakeTimezone

wxDateTime& MakeTimezone(const TimeZone& tz, bool noDST = false)

Modifies the object in place to represent the date in another time zone. If noDST is `true`, no DST adjustments will be made.

### wxDateTime::ToGMT

wxDateTime ToGMT(bool noDST = false) const

This is the same as calling ToTimezone with the argument `GMT0`.

### wxDateTime::MakeGMT

wxDateTime& MakeGMT(bool noDST = false)

This is the same as calling MakeTimezone with the argument `GMT0`.

### wxDateTime::IsDST

int IsDST(Country country = Country_Default) const

Returns `true` if the DST is applied for this date in the given country.

See also

GetBeginDST and GetEndDST