| Version: 3.2.8

Classes | Public Types | Static Public Member Functions | List of all members
wxDateTime Class Reference
Class List by Category » Data Structures

`#include <wx/datetime.h>`

## Detailed Description

wxDateTime class represents an absolute moment in time.

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

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

# Static Functions

All static 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.

# Date Formatting and Parsing

The date formatting and parsing 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(), FormatISOTime() and FormatISOCombined()) 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 cannot 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 and 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, ParseDate() can parse the strings such as "tomorrow", "March first" and even "next Sunday".

Finally notice that each of the parsing functions is available in several overloads: if the input string is a narrow (`char` *) string, then a narrow pointer is returned. If the input string is a wide string, a wide char pointer is returned. Finally, if the input parameter is a wxString, a narrow char pointer is also returned for backwards compatibility but there is also an additional argument of wxString::const_iterator type in which, if it is not NULL, an iterator pointing to the end of the scanned string part is returned.

##

Library: wxBase
Category: Data Structures

Predefined objects/pointers:

- wxDefaultDateTime

See also
  Date and Time, wxTimeSpan, wxDateSpan, wxCalendarCtrl

## Classes
class | TimeZone
| Class representing a time zone. More...
struct | Tm
| Contains broken down date-time representation. More...

## Public Types
enum | TZ { Local , 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 , GMT13 , WET = GMT0 , WEST = GMT1 , CET = GMT1 , CEST = GMT2 , EET = GMT2 , EEST = GMT3 , MSK = GMT3 , MSD = GMT4 , AST = GMT_4 , ADT = GMT_3 , EST = GMT_5 , EDT = GMT_4 , CST = GMT_6 , CDT = GMT_5 , MST = GMT_7 , MDT = GMT_6 , PST = GMT_8 , PDT = GMT_7 , HST = GMT_10 , AKST = GMT_9 , AKDT = GMT_8 , A_WST = GMT8 , A_CST = GMT13 + 1 , A_EST = GMT10 , A_ESST = GMT11 , NZST = GMT12 , NZDT = GMT13 , UTC = GMT0 }
| Time zone symbolic names. More...
enum | Calendar { Gregorian , Julian }
| Several functions accept an extra parameter specifying the calendar to use (although most of them only support now the Gregorian calendar). More...
enum | Country { Country_Unknown , Country_Default , Country_WesternEurope_Start , Country_EEC = Country_WesternEurope_Start , France , Germany , UK , Country_WesternEurope_End = UK , Russia , USA }
| Date calculations often depend on the country and wxDateTime allows setting the country whose conventions should be used using SetCountry(). More...
enum | Month { Jan , Feb , Mar , Apr , May , Jun , Jul , Aug , Sep , Oct , Nov , Dec , Inv_Month }
| symbolic names for the months More...
enum | WeekDay { Sun , Mon , Tue , Wed , Thu , Fri , Sat , Inv_WeekDay }
| symbolic names for the weekdays More...
enum | Year { Inv_Year = SHRT_MIN }
| invalid value for the year More...
enum | NameFlags { Name_Full = 0x01 , Name_Abbr = 0x02 }
| Flags to be used with GetMonthName() and GetWeekDayName() functions. More...
enum | WeekFlags { Default_First , Monday_First , Sunday_First }
| Different parts of the world use different conventions for the week start. More...
typedef unsigned short | wxDateTime_t
| A small unsigned integer type for storing things like minutes, seconds &c. More...

## Public Member Functions
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 cannot return an error code.
| wxDateTime ()
| Default constructor. More...
| wxDateTime (const wxDateTime &date)
| Copy constructor. More...
| wxDateTime (time_t timet)
| Same as Set(). More...
| wxDateTime (const struct tm &tm)
| Same as Set(). More...
| wxDateTime (double jdn)
| Same as Set(). More...
| wxDateTime (wxDateTime_t hour, wxDateTime_t minute=0, wxDateTime_t second=0, wxDateTime_t millisec=0)
| Same as Set(). More...
| wxDateTime (wxDateTime_t day, Month month, int year=Inv_Year, wxDateTime_t hour=0, wxDateTime_t minute=0, wxDateTime_t second=0, wxDateTime_t millisec=0)
| Same as Set(). More...
| wxDateTime (const struct _SYSTEMTIME &st)
| Same as SetFromMSWSysTime. More...
wxDateTime & | ResetTime ()
| Reset time to midnight (00:00:00) without changing the date. More...
wxDateTime & | Set (time_t timet)
| Constructs the object from timet value holding the number of seconds since Jan 1, 1970 UTC. More...
wxDateTime & | Set (const struct tm &tm)
| Sets the date and time from the broken down representation in the standard tm structure. More...
wxDateTime & | Set (const Tm &tm)
| Sets the date and time from the broken down representation in the wxDateTime::Tm structure. More...
wxDateTime & | Set (double jdn)
| Sets the date from the so-called Julian Day Number. More...
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. More...
wxDateTime & | Set (wxDateTime_t day, Month 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. More...
wxDateTime & | SetDay (unsigned short day)
| Sets the day without changing other date components. More...
wxDateTime & | SetFromDOS (unsigned long ddt)
| Sets the date from the date and time in DOS format. More...
wxDateTime & | SetHour (unsigned short hour)
| Sets the hour without changing other date components. More...
wxDateTime & | SetMillisecond (unsigned short millisecond)
| Sets the millisecond without changing other date components. More...
wxDateTime & | SetMinute (unsigned short minute)
| Sets the minute without changing other date components. More...
wxDateTime & | SetMonth (Month month)
| Sets the month without changing other date components. More...
wxDateTime & | SetSecond (unsigned short second)
| Sets the second without changing other date components. More...
wxDateTime & | SetToCurrent ()
| Sets the date and time of to the current values. More...
wxDateTime & | SetYear (int year)
| Sets the year without changing other date components. More...
wxDateTime & | operator= (time_t timet)
| Same as Set(). More...
wxDateTime & | operator= (const struct tm &tm)
| Same as Set(). More...
Accessors
Here are the trivial accessors. Other functions, which might have to perform some more complicated calculations to find the answer are under the "Date Arithmetic" section.
unsigned long | GetAsDOS () const
| Returns the date and time in DOS format. More...
wxDateTime & | SetFromMSWSysTime (const struct _SYSTEMTIME &st)
| Initialize using the Windows SYSTEMTIME structure. More...
void | GetAsMSWSysTime (struct _SYSTEMTIME *st) const
| Returns the date and time in the Windows SYSTEMTIME format. More...
int | GetCentury (const TimeZone &tz=Local) const
| Returns the century of this date. More...
wxDateTime | GetDateOnly () const
| Returns the object having the same date component as this one but time of 00:00:00. More...
unsigned short | GetDay (const TimeZone &tz=Local) const
| Returns the day in the given timezone (local one by default). More...
unsigned short | GetDayOfYear (const TimeZone &tz=Local) const
| Returns the day of the year (in 1-366 range) in the given timezone (local one by default). More...
unsigned short | GetHour (const TimeZone &tz=Local) const
| Returns the hour in the given timezone (local one by default). More...
unsigned short | GetMillisecond (const TimeZone &tz=Local) const
| Returns the milliseconds in the given timezone (local one by default). More...
unsigned short | GetMinute (const TimeZone &tz=Local) const
| Returns the minute in the given timezone (local one by default). More...
Month | GetMonth (const TimeZone &tz=Local) const
| Returns the month in the given timezone (local one by default). More...
unsigned short | GetSecond (const TimeZone &tz=Local) const
| Returns the seconds in the given timezone (local one by default). More...
time_t | GetTicks () const
| Returns the number of seconds since Jan 1, 1970 UTC. More...
wxLongLong | GetValue () const
| Returns the number of milliseconds since Jan 1, 1970 UTC. More...
Tm | GetTm (const TimeZone &tz=Local) const
| Returns broken down representation of the date and time. More...
WeekDay | GetWeekDay (const TimeZone &tz=Local) const
| Returns the week day in the given timezone (local one by default). More...
int | GetWeekBasedYear (const TimeZone &tz) const
| Returns the year to which the week containing this date belongs. More...
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). More...
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. More...
int | GetYear (const TimeZone &tz=Local) const
| Returns the year in the given timezone (local one by default). More...
bool | IsValid () const
| Returns true if the object represents a valid time moment. More...
bool | IsWorkDay (Country country=Country_Default) const
| Returns true is this day is not a holiday in the given country. More...
Date Comparison
There are several functions to allow date comparison. To supplement them, the usual comparison operators taking wxDateTime are defined as well. Notice that an invalid wxDateTime object can only be compared for exact equality, i.e. using `operator==()`, `operator!=()` or IsEqualTo(), but comparisons involving an invalid wxDateTime object using any other operators or IsEarlierThan() or IsLaterThan() functions would result in an assert because their result is not well-defined.
bool | IsEarlierThan (const wxDateTime &datetime) const
| Returns true if this date precedes the given one. More...
bool | IsEqualTo (const wxDateTime &datetime) const
| Returns true if the two dates are strictly identical. More...
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. More...
bool | IsLaterThan (const wxDateTime &datetime) const
| Returns true if this date is later than the given one. More...
bool | IsSameDate (const wxDateTime &dt) const
| Returns true if the date is the same without comparing the time parts. More...
bool | IsSameTime (const wxDateTime &dt) const
| Returns true if the time is the same (although dates may differ). More...
bool | IsStrictlyBetween (const wxDateTime &t1, const wxDateTime &t2) const
| Returns true if this date lies strictly between the two given dates. More...
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. More...
Date Arithmetic
These functions carry out arithmetic 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.
wxDateTime | Add (const wxDateSpan &diff) const
| Adds the given date span to this object. More...
wxDateTime & | Add (const wxDateSpan &diff)
| Adds the given date span to this object. More...
wxDateTime | Add (const wxTimeSpan &diff) const
| Adds the given time span to this object. More...
wxDateTime & | Add (const wxTimeSpan &diff)
| Adds the given time span to this object. More...
wxDateTime | Subtract (const wxTimeSpan &diff) const
| Subtracts the given time span from this object. More...
wxDateTime & | Subtract (const wxTimeSpan &diff)
| Subtracts the given time span from this object. More...
wxDateTime | Subtract (const wxDateSpan &diff) const
| Subtracts the given date span from this object. More...
wxDateTime & | Subtract (const wxDateSpan &diff)
| Subtracts the given date span from this object. More...
wxTimeSpan | Subtract (const wxDateTime &dt) const
| Subtracts another date from this one and returns the difference between them as a wxTimeSpan. More...
wxDateSpan | DiffAsDateSpan (const wxDateTime &dt) const
| Returns the difference between this object and dt as a wxDateSpan. More...
wxDateTime & | operator+= (const wxDateSpan &diff)
| Adds the given date span to this object. More...
wxDateTime | operator+ (const wxDateSpan &ds) const
| Adds the given date span to this object. More...
wxDateTime & | operator-= (const wxDateSpan &diff)
| Subtracts the given date span from this object. More...
wxDateTime | operator- (const wxDateSpan &ds) const
| Subtracts the given date span from this object. More...
wxDateTime & | operator+= (const wxTimeSpan &diff)
| Adds the given time span to this object. More...
wxDateTime | operator+ (const wxTimeSpan &ts) const
| Adds the given time span to this object. More...
wxDateTime & | operator-= (const wxTimeSpan &diff)
| Subtracts the given time span from this object. More...
wxDateTime | operator- (const wxTimeSpan &ts) const
| Subtracts the given time span from this object. More...
wxTimeSpan | operator- (const wxDateTime &dt2) const
| Subtracts another date from this one and returns the difference between them as a wxTimeSpan. More...
Date Formatting and Parsing
See Date Formatting and Parsing
wxString | Format (const wxString &format=wxDefaultDateTimeFormat, const TimeZone &tz=Local) const
| This function does the same as the standard ANSI C `strftime(3)` function (https://cplusplus.com/reference/ctime/strftime/). More...
wxString | FormatDate () const
| Identical to calling Format() with `"%x"` argument (which means "preferred date representation for the current locale"). More...
wxString | FormatISOCombined (char sep='T') const
| Returns the combined date-time representation in the ISO 8601 format `"YYYY-MM-DDTHH:MM:SS"`. More...
wxString | FormatISODate () const
| This function returns the date representation in the ISO 8601 format `"YYYY-MM-DD"`. More...
wxString | FormatISOTime () const
| This function returns the time representation in the ISO 8601 format `"HH:MM:SS"`. More...
wxString | FormatTime () const
| Identical to calling Format() with `"%X"` argument (which means "preferred time representation for the current locale"). More...
bool | ParseDate (const wxString &date, wxString::const_iterator *end)
| This function is like ParseDateTime(), but it only allows the date to be specified. More...
bool | ParseDateTime (const wxString &datetime, wxString::const_iterator *end)
| Parses the string datetime containing the date and time in free format. More...
bool | ParseFormat (const wxString &date, const wxString &format, const wxDateTime &dateDef, wxString::const_iterator *end)
| Parses the string date according to the given format. More...
bool | ParseFormat (const wxString &date, const wxString &format, wxString::const_iterator *end)
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
bool | ParseFormat (const wxString &date, wxString::const_iterator *end)
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
bool | ParseISOCombined (const wxString &date, char sep='T')
| This function parses the string containing the date and time in ISO 8601 combined format `"YYYY-MM-DDTHH:MM:SS"`. More...
bool | ParseISODate (const wxString &date)
| This function parses the date in ISO 8601 format `"YYYY-MM-DD"`. More...
bool | ParseISOTime (const wxString &date)
| This function parses the time in ISO 8601 format `"HH:MM:SS"`. More...
bool | ParseRfc822Date (const wxString &date, wxString::const_iterator *end)
| Parses the string date looking for a date formatted according to the RFC 822 in it. More...
bool | ParseTime (const wxString &time, wxString::const_iterator *end)
| This functions is like ParseDateTime(), but only allows the time to be specified in the input string. More...
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. None of the functions in this section modify the time part of the wxDateTime, they only work with the date part of it.
wxDateTime | GetLastMonthDay (Month month=Inv_Month, int year=Inv_Year) const
| Returns the copy of this object to which SetToLastMonthDay() was applied. More...
wxDateTime | GetLastWeekDay (WeekDay weekday, Month month=Inv_Month, int year=Inv_Year)
| Returns the copy of this object to which SetToLastWeekDay() was applied. More...
wxDateTime | GetNextWeekDay (WeekDay weekday) const
| Returns the copy of this object to which SetToNextWeekDay() was applied. More...
wxDateTime | GetPrevWeekDay (WeekDay weekday) const
| Returns the copy of this object to which SetToPrevWeekDay() was applied. More...
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. More...
wxDateTime | GetWeekDayInSameWeek (WeekDay weekday, WeekFlags flags=Monday_First) const
| Returns the copy of this object to which SetToWeekDayInSameWeek() was applied. More...
wxDateTime | GetYearDay (wxDateTime_t yday) const
| Returns the copy of this object to which SetToYearDay() was applied. More...
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). More...
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). More...
wxDateTime & | SetToNextWeekDay (WeekDay weekday)
| Sets the date so that it will be the first weekday following the current date. More...
wxDateTime & | SetToPrevWeekDay (WeekDay weekday)
| Sets the date so that it will be the last weekday before the current date. More...
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). More...
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. More...
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). More...
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. Related functions in other groups: wxDateTime(double), Set(double)
double | GetJDN () const
| Synonym for GetJulianDayNumber(). More...
double | GetJulianDayNumber () const
| Returns the JDN corresponding to this date. More...
double | GetMJD () const
| Synonym for GetModifiedJulianDayNumber(). More...
double | GetModifiedJulianDayNumber () const
| Returns the "Modified Julian Day Number" (MJD) which is, by definition, is equal to JDN - 2400000.5. More...
double | GetRataDie () const
| Return the Rata Die number of this date. More...
Time Zone and DST Support
Please see the time zone overview for more information about time zones. Normally, these functions should be rarely used. Note that all functions in this section always use the current offset for the specified time zone and don't take into account its possibly different historical value at the given date. Related functions in other groups: GetBeginDST(), GetEndDST()
wxDateTime | FromTimezone (const TimeZone &tz, bool noDST=false) const
| Transform the date from the given time zone to the local one. More...
int | IsDST (Country country=Country_Default) const
| Returns true if the DST is applied for this date in the given country. More...
wxDateTime & | MakeFromTimezone (const TimeZone &tz, bool noDST=false)
| Same as FromTimezone() but modifies the object in place. More...
wxDateTime & | MakeTimezone (const TimeZone &tz, bool noDST=false)
| Modifies the object in place to represent the date in another time zone. More...
wxDateTime & | MakeUTC (bool noDST=false)
| This is the same as calling MakeTimezone() with the argument `GMT0`. More...
wxDateTime | ToTimezone (const TimeZone &tz, bool noDST=false) const
| Transform the date to the given time zone. More...
wxDateTime | ToUTC (bool noDST=false) const
| This is the same as calling ToTimezone() with the argument `GMT0`. More...

## Static Public Member Functions
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. More...
static void | GetAmPmStrings (wxString *am, wxString *pm)
| Returns the translations of the strings `AM` and `PM` used for time formatting for the current locale. More...
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). More...
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). More...
static int | GetCentury (int year)
| Get the current century, i.e. first two digits of the year, in given calendar (only Gregorian is currently supported). More...
static Country | GetCountry ()
| Returns the current default country. More...
static Month | GetCurrentMonth (Calendar cal=Gregorian)
| Get the current month in given calendar (only Gregorian is currently supported). More...
static int | GetCurrentYear (Calendar cal=Gregorian)
| Get the current year in given calendar (only Gregorian is currently supported). More...
static wxString | GetEnglishMonthName (Month month, NameFlags flags=Name_Full)
| Return the standard English name of the given month. More...
static wxString | GetEnglishWeekDayName (WeekDay weekday, NameFlags flags=Name_Full)
| Return the standard English name of the given week day. More...
static wxString | GetMonthName (Month month, NameFlags flags=Name_Full)
| Gets the full (default) or abbreviated name of the given month. More...
static wxDateTime_t | GetNumberOfDays (int year, Calendar cal=Gregorian)
| Returns the number of days in the given year. More...
static wxDateTime_t | GetNumberOfDays (Month month, int year=Inv_Year, Calendar cal=Gregorian)
| Returns the number of days in the given month of the given year. More...
static time_t | GetTimeNow ()
| Returns the current time. More...
static tm * | GetTmNow (struct tm *tm)
| Returns the current time broken down using the buffer whose address is passed to the function with tm to store the result. More...
static tm * | GetTmNow ()
| Returns the current time broken down. More...
static wxString | GetWeekDayName (WeekDay weekday, NameFlags flags=Name_Full)
| Gets the full (default) or abbreviated name of the given week day. More...
static bool | IsDSTApplicable (int year=Inv_Year, Country country=Country_Default)
| Returns true if DST was used in the given year (the current one by default) in the given country. More...
static bool | GetFirstWeekDay (WeekDay *firstDay)
| Acquires the first weekday of a week based on locale and/or OS settings. More...
static bool | IsLeapYear (int year=Inv_Year, Calendar cal=Gregorian)
| Returns true if the year is a leap one in the specified calendar. More...
static bool | IsWestEuropeanCountry (Country country=Country_Default)
| This function returns true if the specified (or default) country is one of Western European ones. More...
static wxDateTime | Now ()
| Returns the object corresponding to the current time in local time zone. More...
static void | SetCountry (Country country)
| Sets the country to use by default. More...
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 . More...
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). More...
static wxDateTime | UNow ()
| Returns the object corresponding to the current time including the milliseconds. More...

## Member Typedef Documentation

## ◆ wxDateTime_t

typedef unsigned short wxDateTime::wxDateTime_t

A small unsigned integer type for storing things like minutes, seconds &c.

It should be at least short (i.e. not char) to contain the number of milliseconds - it may also be 'int' because there is no size penalty associated with it in our code, we don't store any data in this format.

## Member Enumeration Documentation

## ◆ Calendar

enum wxDateTime::Calendar

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.

Enumerator
Gregorian | calendar currently in use in Western countries
Julian | calendar in use since -45 until the 1582 (or later)

## ◆ Country

enum wxDateTime::Country

Date calculations often depend on the country and wxDateTime allows setting the country whose conventions should be used using SetCountry().

It takes one of the following values as parameter.

Enumerator
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 |
France |
Germany |
UK |
Country_WesternEurope_End |
Russia |
USA |

## ◆ Month

enum wxDateTime::Month

symbolic names for the months

Enumerator
Jan |
Feb |
Mar |
Apr |
May |
Jun |
Jul |
Aug |
Sep |
Oct |
Nov |
Dec |
Inv_Month | Invalid month value.

## ◆ NameFlags

enum wxDateTime::NameFlags

Flags to be used with GetMonthName() and GetWeekDayName() functions.

Enumerator
Name_Full | return full name
Name_Abbr | return abbreviated name

## ◆ TZ

enum wxDateTime::TZ

Time zone symbolic names.

Enumerator
Local | the time in the current time zone
GMT_12 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT_11 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT_10 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT_9 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT_8 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT_7 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT_6 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT_5 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT_4 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT_3 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT_2 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT_1 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT0 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT1 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT2 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT3 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT4 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT5 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT6 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT7 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT8 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT9 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT10 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT11 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT12 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
GMT13 | zones from GMT (= Greenwich Mean Time): they're guaranteed to be consequent numbers, so writing something like `GMT0 + offset` is safe if abs(offset) <= 12
WET | Western Europe Time.
WEST | Western Europe Summer Time.
CET | Central Europe Time.
CEST | Central Europe Summer Time.
EET | Eastern Europe Time.
EEST | Eastern Europe Summer Time.
MSK | Moscow Time.
MSD | Moscow Summer Time.
AST | Atlantic Standard Time.
ADT | Atlantic Daylight Time.
EST | Eastern Standard Time.
EDT | Eastern Daylight Saving Time.
CST | Central Standard Time.
CDT | Central Daylight Saving Time.
MST | Mountain Standard Time.
MDT | Mountain Daylight Saving Time.
PST | Pacific Standard Time.
PDT | Pacific Daylight Saving Time.
HST | Hawaiian Standard Time.
AKST | Alaska Standard Time.
AKDT | Alaska Daylight Saving Time.
A_WST | Western Standard Time.
A_CST | Central Standard Time (+9.5)
A_EST | Eastern Standard Time.
A_ESST | Eastern Summer Time.
NZST | Standard Time.
NZDT | Daylight Saving Time.
UTC | Universal Coordinated Time.

## ◆ WeekDay

enum wxDateTime::WeekDay

symbolic names for the weekdays

Enumerator
Sun |
Mon |
Tue |
Wed |
Thu |
Fri |
Sat |
Inv_WeekDay | Invalid week day value.

## ◆ WeekFlags

enum wxDateTime::WeekFlags

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 behaviour may be specified by giving one of the following constants as argument to these functions.

Enumerator
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

## ◆ Year

enum wxDateTime::Year

invalid value for the year

Enumerator
Inv_Year |

## Constructor & Destructor Documentation

## ◆ wxDateTime() [1/8]

wxDateTime::wxDateTime | ( |  | ) |

Default constructor.

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

## ◆ wxDateTime() [2/8]

wxDateTime::wxDateTime | ( | const wxDateTime & | date | ) |

Copy constructor.

## ◆ wxDateTime() [3/8]

wxDateTime::wxDateTime | ( | time_t | timet | ) |

Same as Set().

## ◆ wxDateTime() [4/8]

wxDateTime::wxDateTime | ( | const struct tm & | tm | ) |

Same as Set().

## ◆ wxDateTime() [5/8]

wxDateTime::wxDateTime | ( | double | jdn | ) |

Same as Set().

## ◆ wxDateTime() [6/8]

wxDateTime::wxDateTime | ( | wxDateTime_t | hour,
|  | wxDateTime_t | minute = `0`,
|  | wxDateTime_t | second = `0`,
|  | wxDateTime_t | millisec = `0`
| ) |  |

Same as Set().

## ◆ wxDateTime() [7/8]

wxDateTime::wxDateTime | ( | wxDateTime_t | day,
|  | Month | month,
|  | int | year = `Inv_Year`,
|  | wxDateTime_t | hour = `0`,
|  | wxDateTime_t | minute = `0`,
|  | wxDateTime_t | second = `0`,
|  | wxDateTime_t | millisec = `0`
| ) |  |

Same as Set().

## ◆ wxDateTime() [8/8]

wxDateTime::wxDateTime | ( | const struct _SYSTEMTIME & | st | ) |

Same as SetFromMSWSysTime.

Parameters

  st | Input, Windows SYSTEMTIME reference

Since
  2.9.0

Remarks
  MSW only
  Availability: only available for the wxMSW port.

## Member Function Documentation

## ◆ Add() [1/4]

wxDateTime& wxDateTime::Add | ( | const wxDateSpan & | diff | ) |

Adds the given date span to this object.

## ◆ Add() [2/4]

wxDateTime wxDateTime::Add | ( | const wxDateSpan & | diff | ) | const

Adds the given date span to this object.

## ◆ Add() [3/4]

wxDateTime& wxDateTime::Add | ( | const wxTimeSpan & | diff | ) |

Adds the given time span to this object.

## ◆ Add() [4/4]

wxDateTime wxDateTime::Add | ( | const wxTimeSpan & | diff | ) | const

Adds the given time span to this object.

## ◆ ConvertYearToBC()

static int wxDateTime::ConvertYearToBC | ( | int | year | ) |
| static

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
wxDateTime class represents an absolute moment in time.
Definition: datetime.h:77
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...

## ◆ DiffAsDateSpan()

wxDateSpan wxDateTime::DiffAsDateSpan | ( | const wxDateTime & | dt | ) | const

Returns the difference between this object and dt as a wxDateSpan.

This method allows finding the number of entire years, months, weeks and days between dt and this date.

Since
  2.9.5

## ◆ Format()

wxString wxDateTime::Format | ( | const wxString & | format = `wxDefaultDateTimeFormat`,
|  | const TimeZone & | tz = `Local`
| ) |  | const

This function does the same as the standard ANSI C `strftime(3)` function (https://cplusplus.com/reference/ctime/strftime/).

Please see its description for the meaning of format parameter.

Notice that POSIX `"%g"`, `"%G"`, `"%V"` and `"%z"` format specifiers are supported even if the standard library doesn't support them (e.g. MSVC).

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

## ◆ FormatDate()

wxString wxDateTime::FormatDate | ( |  | ) | const

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

## ◆ FormatISOCombined()

wxString wxDateTime::FormatISOCombined | ( | char | sep = `'T'` | ) | const

Returns the combined date-time representation in the ISO 8601 format `"YYYY-MM-DDTHH:MM:SS"`.

The sep parameter default value produces the result exactly corresponding to the ISO standard, but it can also be useful to use a space as separator if a more human-readable combined date-time representation is needed.

See also
  FormatISODate(), FormatISOTime(), ParseISOCombined()

## ◆ FormatISODate()

wxString wxDateTime::FormatISODate | ( |  | ) | const

This function returns the date representation in the ISO 8601 format `"YYYY-MM-DD"`.

## ◆ FormatISOTime()

wxString wxDateTime::FormatISOTime | ( |  | ) | const

This function returns the time representation in the ISO 8601 format `"HH:MM:SS"`.

## ◆ FormatTime()

wxString wxDateTime::FormatTime | ( |  | ) | const

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

## ◆ FromTimezone()

wxDateTime wxDateTime::FromTimezone | ( | const TimeZone & | tz,
|  | bool | noDST = `false`
| ) |  | const

Transform the date from the given time zone to the local one.

If noDST is true, no DST adjustments will be made.

If tz parameter is wxDateTime::Local, no adjustment is performed.

Returns
  The date adjusted by the different between the given and the local time zones.

## ◆ GetAmPmStrings()

static void wxDateTime::GetAmPmStrings | ( | wxString * | am,
|  | wxString * | pm
| ) |  |
| static

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.

## ◆ GetAsDOS()

unsigned long wxDateTime::GetAsDOS | ( |  | ) | const

Returns the date and time in DOS format.

## ◆ GetAsMSWSysTime()

void wxDateTime::GetAsMSWSysTime | ( | struct _SYSTEMTIME * | st | ) | const

Returns the date and time in the Windows SYSTEMTIME format.

Parameters

  st | Output, pointer to Windows SYSTEMTIME

Since
  2.9.0

Remarks
  MSW only
  Availability: only available for the wxMSW port.

## ◆ GetBeginDST()

static wxDateTime wxDateTime::GetBeginDST | ( | int | year = `Inv_Year`,
|  | Country | country = `Country_Default`
| ) |  |
| static

Get the beginning of DST for the given country in the given year (current one by default).

This function suffers from limitations described in the DST overview.

See also
  GetEndDST()

## ◆ GetCentury() [1/2]

int wxDateTime::GetCentury | ( | const TimeZone & | tz = `Local` | ) | const

Returns the century of this date.

## ◆ GetCentury() [2/2]

static int wxDateTime::GetCentury | ( | int | year | ) |
| static

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

## ◆ GetCountry()

static Country wxDateTime::GetCountry | ( |  | ) |
| static

Returns the current default country.

The default country is used for DST calculations, for example.

See also
  SetCountry()

## ◆ GetCurrentMonth()

static Month wxDateTime::GetCurrentMonth | ( | Calendar | cal = `Gregorian` | ) |
| static

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

## ◆ GetCurrentYear()

static int wxDateTime::GetCurrentYear | ( | Calendar | cal = `Gregorian` | ) |
| static

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

## ◆ GetDateOnly()

wxDateTime wxDateTime::GetDateOnly | ( |  | ) | const

Returns the object having the same date component as this one but time of 00:00:00.

Since
  2.8.2

See also
  ResetTime()

## ◆ GetDay()

unsigned short wxDateTime::GetDay | ( | const TimeZone & | tz = `Local` | ) | const

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

## ◆ GetDayOfYear()

unsigned short wxDateTime::GetDayOfYear | ( | const TimeZone & | tz = `Local` | ) | const

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

## ◆ GetEndDST()

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

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

See also
  GetBeginDST()

## ◆ GetEnglishMonthName()

static wxString wxDateTime::GetEnglishMonthName | ( | Month | month,
|  | NameFlags | flags = `Name_Full`
| ) |  |
| static

Return the standard English name of the given month.

This function always returns "January" or "Jan" for January, use GetMonthName() to retrieve the name of the month in the users current locale.

Parameters

  month | One of wxDateTime::Jan, ..., wxDateTime::Dec values.
  flags | Either Name_Full (default) or Name_Abbr.

See also
  GetEnglishWeekDayName()

Since
  2.9.0

## ◆ GetEnglishWeekDayName()

static wxString wxDateTime::GetEnglishWeekDayName | ( | WeekDay | weekday,
|  | NameFlags | flags = `Name_Full`
| ) |  |
| static

Return the standard English name of the given week day.

This function always returns "Monday" or "Mon" for Monday, use GetWeekDayName() to retrieve the name of the month in the users current locale.

Parameters

  weekday | One of wxDateTime::Sun, ..., wxDateTime::Sat values.
  flags | Either Name_Full (default) or Name_Abbr.

See also
  GetEnglishMonthName()

Since
  2.9.0

## ◆ GetFirstWeekDay()

static bool wxDateTime::GetFirstWeekDay | ( | WeekDay * | firstDay | ) |
| static

Acquires the first weekday of a week based on locale and/or OS settings.

If the information was not available, returns `Sun`.

Parameters

  firstDay | The address of a WeekDay variable to which the first weekday will be assigned to.

Returns
  If the first day could not be determined, returns false, and firstDay is set to a fallback value.

Since
  3.1.1

## ◆ GetHour()

unsigned short wxDateTime::GetHour | ( | const TimeZone & | tz = `Local` | ) | const

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

## ◆ GetJDN()

double wxDateTime::GetJDN | ( |  | ) | const

Synonym for GetJulianDayNumber().

## ◆ GetJulianDayNumber()

double wxDateTime::GetJulianDayNumber | ( |  | ) | const

Returns the JDN corresponding to this date.

Beware of rounding errors!

See also
  GetModifiedJulianDayNumber()

## ◆ GetLastMonthDay()

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

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

## ◆ GetLastWeekDay()

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

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

## ◆ GetMillisecond()

unsigned short wxDateTime::GetMillisecond | ( | const TimeZone & | tz = `Local` | ) | const

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

## ◆ GetMinute()

unsigned short wxDateTime::GetMinute | ( | const TimeZone & | tz = `Local` | ) | const

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

## ◆ GetMJD()

double wxDateTime::GetMJD | ( |  | ) | const

Synonym for GetModifiedJulianDayNumber().

## ◆ GetModifiedJulianDayNumber()

double wxDateTime::GetModifiedJulianDayNumber | ( |  | ) | const

Returns the "Modified Julian Day Number" (MJD) which is, by definition, is 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 the noons like JDN. The MJD 0 represents Nov 17, 1858.

## ◆ GetMonth()

Month wxDateTime::GetMonth | ( | const TimeZone & | tz = `Local` | ) | const

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

## ◆ GetMonthName()

static wxString wxDateTime::GetMonthName | ( | Month | month,
|  | NameFlags | flags = `Name_Full`
| ) |  |
| static

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

This function returns the name in the current locale, use GetEnglishMonthName() to get the untranslated name if necessary.

Parameters

  month | One of wxDateTime::Jan, ..., wxDateTime::Dec values.
  flags | Either Name_Full (default) or Name_Abbr.

See also
  GetWeekDayName()

## ◆ GetNextWeekDay()

wxDateTime wxDateTime::GetNextWeekDay | ( | WeekDay | weekday | ) | const

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

## ◆ GetNumberOfDays() [1/2]

static wxDateTime_t wxDateTime::GetNumberOfDays | ( | int | year,
|  | Calendar | cal = `Gregorian`
| ) |  |
| static

Returns the number of days in the given year.

The only supported value for cal currently is `Gregorian`.

## ◆ GetNumberOfDays() [2/2]

static wxDateTime_t wxDateTime::GetNumberOfDays | ( | Month | month,
|  | int | year = `Inv_Year`,
|  | Calendar | cal = `Gregorian`
| ) |  |
| static

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

The only supported value for cal currently is `Gregorian`.

## ◆ GetPrevWeekDay()

wxDateTime wxDateTime::GetPrevWeekDay | ( | WeekDay | weekday | ) | const

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

## ◆ GetRataDie()

double wxDateTime::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.

## ◆ GetSecond()

unsigned short wxDateTime::GetSecond | ( | const TimeZone & | tz = `Local` | ) | const

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

## ◆ GetTicks()

time_t wxDateTime::GetTicks | ( |  | ) | const

Returns the number of seconds since Jan 1, 1970 UTC.

This function is provided solely for interoperability with the standard C library and other libraries using `time_t` values. If you just need to get the value represented by this object as a number, use GetValue() instead, which doesn't lose precision and covers the entire supported range of dates, unlike this one which is limited to the range of positive 32 bit values, i.e. from Jan 1, 1970 to around Jan 19, 2038 and returns `-1` for the dates outside of it.

Additionally, this method must be called on an initialized date object and an assertion failure occurs if it is called on an object for which IsValid() is false.

## ◆ GetTimeNow()

static time_t wxDateTime::GetTimeNow | ( |  | ) |
| static

Returns the current time.

## ◆ GetTm()

Tm wxDateTime::GetTm | ( | const TimeZone & | tz = `Local` | ) | const

Returns broken down representation of the date and time.

## ◆ GetTmNow() [1/2]

static tm* wxDateTime::GetTmNow | ( |  | ) |
| static

Returns the current time broken down.

Note that this function returns a pointer to a static buffer that's reused by calls to this function and certain C library functions (e.g. localtime). If there is any chance your code might be used in a multi-threaded application, you really should use GetTmNow(struct tm *) instead.

## ◆ GetTmNow() [2/2]

static tm* wxDateTime::GetTmNow | ( | struct tm * | tm | ) |
| static

Returns the current time broken down using the buffer whose address is passed to the function with tm to store the result.

## ◆ GetValue()

wxLongLong wxDateTime::GetValue | ( |  | ) | const

Returns the number of milliseconds since Jan 1, 1970 UTC.

Directly returns the internal representation of wxDateTime object as the number of milliseconds (positive or negative) since the Unix/C epoch.

## ◆ GetWeekBasedYear()

int wxDateTime::GetWeekBasedYear | ( | const TimeZone & | tz | ) | const

Returns the year to which the week containing this date belongs.

The value returned by this function is the same as the year, except, possibly, for a few days at the very beginning and very end of the year if they belong to a week which is mostly (i.e. at least 4 days) is in another year in which case that other (previous or next) year is returned.

For example, January 1 in 2015 belongs to the first year of 2015, hence GetWeekOfYear() for it returns 1 and this function returns 2015. However January 1 in 2016 belongs to the last week of 2015 according to ISO 8601 standard rules and so GetWeekOfYear() returns 53 and this function returns 2015, although GetYear() returns 2016.

Since
  3.1.0

## ◆ GetWeekDay() [1/2]

WeekDay wxDateTime::GetWeekDay | ( | const TimeZone & | tz = `Local` | ) | const

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

## ◆ GetWeekDay() [2/2]

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

## ◆ GetWeekDayInSameWeek()

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

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

## ◆ GetWeekDayName()

static wxString wxDateTime::GetWeekDayName | ( | WeekDay | weekday,
|  | NameFlags | flags = `Name_Full`
| ) |  |
| static

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

This function returns the name in the current locale, use GetEnglishWeekDayName() to get the untranslated name if necessary.

Parameters

  weekday | One of wxDateTime::Sun, ..., wxDateTime::Sat values.
  flags | Either Name_Full (default) or Name_Abbr.

See also
  GetMonthName()

## ◆ GetWeekOfMonth()

wxDateTime_t wxDateTime::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.

## ◆ GetWeekOfYear()

wxDateTime_t wxDateTime::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.

See also
  GetWeekBasedYear()

## ◆ GetYear()

int wxDateTime::GetYear | ( | const TimeZone & | tz = `Local` | ) | const

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

## ◆ GetYearDay()

wxDateTime wxDateTime::GetYearDay | ( | wxDateTime_t | yday | ) | const

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

## ◆ IsBetween()

bool wxDateTime::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()

## ◆ IsDST()

int wxDateTime::IsDST | ( | Country | country = `Country_Default` | ) | const

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

See also
  GetBeginDST(), GetEndDST()

## ◆ IsDSTApplicable()

static bool wxDateTime::IsDSTApplicable | ( | int | year = `Inv_Year`,
|  | Country | country = `Country_Default`
| ) |  |
| static

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

## ◆ IsEarlierThan()

bool wxDateTime::IsEarlierThan | ( | const wxDateTime & | datetime | ) | const

Returns true if this date precedes the given one.

## ◆ IsEqualTo()

bool wxDateTime::IsEqualTo | ( | const wxDateTime & | datetime | ) | const

Returns true if the two dates are strictly identical.

## ◆ IsEqualUpTo()

bool wxDateTime::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.

## ◆ IsLaterThan()

bool wxDateTime::IsLaterThan | ( | const wxDateTime & | datetime | ) | const

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

## ◆ IsLeapYear()

static bool wxDateTime::IsLeapYear | ( | int | year = `Inv_Year`,
|  | Calendar | cal = `Gregorian`
| ) |  |
| static

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

This functions supports Gregorian and Julian calendars.

## ◆ IsSameDate()

bool wxDateTime::IsSameDate | ( | const wxDateTime & | dt | ) | const

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

## ◆ IsSameTime()

bool wxDateTime::IsSameTime | ( | const wxDateTime & | dt | ) | const

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

## ◆ IsStrictlyBetween()

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

Returns true if this date lies strictly between the two given dates.

See also
  IsBetween()

## ◆ IsValid()

bool wxDateTime::IsValid | ( |  | ) | const

Returns true if the object represents a valid time moment.

## ◆ IsWestEuropeanCountry()

static bool wxDateTime::IsWestEuropeanCountry | ( | Country | country = `Country_Default` | ) |
| static

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.

## ◆ IsWorkDay()

bool wxDateTime::IsWorkDay | ( | Country | country = `Country_Default` | ) | const

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

## ◆ MakeFromTimezone()

wxDateTime& wxDateTime::MakeFromTimezone | ( | const TimeZone & | tz,
|  | bool | noDST = `false`
| ) |  |

Same as FromTimezone() but modifies the object in place.

## ◆ MakeTimezone()

wxDateTime& 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.

## ◆ MakeUTC()

wxDateTime& wxDateTime::MakeUTC | ( | bool | noDST = `false` | ) |

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

## ◆ Now()

static wxDateTime wxDateTime::Now | ( |  | ) |
| static

Returns the object corresponding to the current time in local time zone.

Example:

wxDateTime now = wxDateTime::Now();
printf("Current time in Paris:\t%s\n", now.Format("%c", wxDateTime::CET).c_str());
wxDateTime::CET
@ CET
Central Europe Time.
Definition: datetime.h:117
wxDateTime::Format
wxString Format(const wxString &format=wxDefaultDateTimeFormat, const TimeZone &tz=Local) const
This function does the same as the standard ANSI C strftime(3) function (https://cplusplus....
wxDateTime::Now
static wxDateTime Now()
Returns the object corresponding to the current time in local time zone.
wxString::c_str
wxCStrData c_str() const
Returns a lightweight intermediate class which is in turn implicitly convertible to both const char* ...

Note
  This function is accurate up to seconds. UNow() can be used if better precision is required.

See also
  Today()

## ◆ operator+() [1/2]

wxDateTime wxDateTime::operator+ | ( | const wxDateSpan & | ds | ) | const

Adds the given date span to this object.

## ◆ operator+() [2/2]

wxDateTime wxDateTime::operator+ | ( | const wxTimeSpan & | ts | ) | const

Adds the given time span to this object.

## ◆ operator+=() [1/2]

wxDateTime& wxDateTime::operator+= | ( | const wxDateSpan & | diff | ) |

Adds the given date span to this object.

## ◆ operator+=() [2/2]

wxDateTime& wxDateTime::operator+= | ( | const wxTimeSpan & | diff | ) |

Adds the given time span to this object.

## ◆ operator-() [1/3]

wxDateTime wxDateTime::operator- | ( | const wxDateSpan & | ds | ) | const

Subtracts the given date span from this object.

## ◆ operator-() [2/3]

wxTimeSpan wxDateTime::operator- | ( | const wxDateTime & | dt2 | ) | const

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

## ◆ operator-() [3/3]

wxDateTime wxDateTime::operator- | ( | const wxTimeSpan & | ts | ) | const

Subtracts the given time span from this object.

## ◆ operator-=() [1/2]

wxDateTime& wxDateTime::operator-= | ( | const wxDateSpan & | diff | ) |

Subtracts the given date span from this object.

## ◆ operator-=() [2/2]

wxDateTime& wxDateTime::operator-= | ( | const wxTimeSpan & | diff | ) |

Subtracts the given time span from this object.

## ◆ operator=() [1/2]

wxDateTime& wxDateTime::operator= | ( | const struct tm & | tm | ) |

Same as Set().

## ◆ operator=() [2/2]

wxDateTime& wxDateTime::operator= | ( | time_t | timet | ) |

Same as Set().

## ◆ ParseDate()

bool wxDateTime::ParseDate | ( | const wxString & | date,
|  | wxString::const_iterator * | end
| ) |  |

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.

See ParseFormat() for the description of function parameters and return value.

See also
  Format()

## ◆ ParseDateTime()

bool wxDateTime::ParseDateTime | ( | const wxString & | datetime,
|  | wxString::const_iterator * | end
| ) |  |

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 cannot be parsed in any way at all. Notice that the function will fail if either date or time part is present but not both, use ParseDate() or ParseTime() to parse strings containing just the date or time component.

See ParseFormat() for the description of function parameters and return value.

## ◆ ParseFormat() [1/3]

bool wxDateTime::ParseFormat | ( | const wxString & | date,
|  | const wxString & | format,
|  | const wxDateTime & | dateDef,
|  | wxString::const_iterator * | end
| ) |  |

Parses the string date according to the given format.

This function is similar to `strptime(3)` but doesn't use it and implements the parsing itself, with support for all the standard (POSIX) formatting specifiers as well as a number of GNU extensions such as `l`, `F`, `z` (but not `Z`, currently) etc.

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 day of the month), the month and the year are taken from dateDef. If it is not specified, Today() is used as the default date.

Example of using this function:

wxDateTime dt;
wxString str = "...";
wxString::const_iterator end;
if ( !dt.ParseFormat(str, "%Y-%m-%d", &end) )
... parsing failed ...
else if ( end == str.end() )
... entire string parsed ...
else
... wxString(end, str.end()) left over ...
wxDateTime::ParseFormat
bool ParseFormat(const wxString &date, const wxString &format, const wxDateTime &dateDef, wxString::const_iterator *end)
Parses the string date according to the given format.
wxString
String class for passing textual data to or receiving it from wxWidgets.
Definition: string.h:315
wxString::end
const_iterator end() const

Parameters

  date | The string to be parsed.
  format | strptime()-like format string.
  dateDef | Used to fill in the date components not specified in the date string.
  end | Will be filled with the iterator pointing to the location where the parsing stopped if the function returns true. If the entire string was consumed, it is set to `date.end()`. Notice that this argument must be non-NULL.

Returns
  true if at least part of the string was parsed successfully, false otherwise.

See also
  Format()

## ◆ ParseFormat() [2/3]

bool wxDateTime::ParseFormat | ( | const wxString & | date,
|  | const wxString & | format,
|  | wxString::const_iterator * | end
| ) |  |

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## ◆ ParseFormat() [3/3]

bool wxDateTime::ParseFormat | ( | const wxString & | date,
|  | wxString::const_iterator * | end
| ) |  |

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## ◆ ParseISOCombined()

bool wxDateTime::ParseISOCombined | ( | const wxString & | date,
|  | char | sep = `'T'`
| ) |  |

This function parses the string containing the date and time in ISO 8601 combined format `"YYYY-MM-DDTHH:MM:SS"`.

The separator between the date and time parts must be equal to sep for the function to succeed.

Returns
  true if the entire string was parsed successfully, false otherwise.

## ◆ ParseISODate()

bool wxDateTime::ParseISODate | ( | const wxString & | date | ) |

This function parses the date in ISO 8601 format `"YYYY-MM-DD"`.

Returns
  true if the entire string was parsed successfully, false otherwise.

## ◆ ParseISOTime()

bool wxDateTime::ParseISOTime | ( | const wxString & | date | ) |

This function parses the time in ISO 8601 format `"HH:MM:SS"`.

Returns
  true if the entire string was parsed successfully, false otherwise.

## ◆ ParseRfc822Date()

bool wxDateTime::ParseRfc822Date | ( | const wxString & | date,
|  | wxString::const_iterator * | end
| ) |  |

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.

See ParseFormat() for the description of function parameters and return value.

## ◆ ParseTime()

bool wxDateTime::ParseTime | ( | const wxString & | time,
|  | wxString::const_iterator * | end
| ) |  |

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

See ParseFormat() for the description of function parameters and return value.

## ◆ ResetTime()

wxDateTime& wxDateTime::ResetTime | ( |  | ) |

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

## ◆ Set() [1/6]

wxDateTime& wxDateTime::Set | ( | const struct tm & | tm | ) |

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

## ◆ Set() [2/6]

wxDateTime& wxDateTime::Set | ( | const Tm & | tm | ) |

Sets the date and time from the broken down representation in the wxDateTime::Tm structure.

## ◆ Set() [3/6]

wxDateTime& 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.

## ◆ Set() [4/6]

wxDateTime& wxDateTime::Set | ( | time_t | timet | ) |

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

If timet is invalid, i.e.

(time_t)-1

, wxDateTime becomes invalid too, i.e. its IsValid() will return false.

## ◆ Set() [5/6]

wxDateTime& wxDateTime::Set | ( | wxDateTime_t | day,
|  | Month | 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.

If the function parameters are invalid, e.g. month is February and day is 30, the object is left in an invalid state, i.e. IsValid() method will return false.

If the specified time moment is invalid due to DST, i.e. it falls into the "missing" hour on the date on which the DST starts, a valid wxDateTime object is still constructed but its hour component is moved forward to ensure that it corresponds to a valid moment in the local time zone. For example, in the CET time zone the DST started on 2013-03-31T02:00:00 in 2013 and so setting the object to 2:30 at this date actually sets the hour to 3, and not 2.

## ◆ Set() [6/6]

wxDateTime& 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.

See the full Set() overload for the remarks about DST.

## ◆ SetCountry()

static void wxDateTime::SetCountry | ( | Country | country | ) |
| static

Sets the country to use by default.

This setting influences the DST calculations, date formatting and other things.

See also
  GetCountry()

## ◆ SetDay()

wxDateTime& wxDateTime::SetDay | ( | unsigned short | day | ) |

Sets the day without changing other date components.

## ◆ SetFromDOS()

wxDateTime& wxDateTime::SetFromDOS | ( | unsigned long | ddt | ) |

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

## ◆ SetFromMSWSysTime()

wxDateTime& wxDateTime::SetFromMSWSysTime | ( | const struct _SYSTEMTIME & | st | ) |

Initialize using the Windows SYSTEMTIME structure.

Parameters

  st | Input, Windows SYSTEMTIME reference

Since
  2.9.0

Remarks
  MSW only
  Availability: only available for the wxMSW port.

## ◆ SetHour()

wxDateTime& wxDateTime::SetHour | ( | unsigned short | hour | ) |

Sets the hour without changing other date components.

## ◆ SetMillisecond()

wxDateTime& wxDateTime::SetMillisecond | ( | unsigned short | millisecond | ) |

Sets the millisecond without changing other date components.

## ◆ SetMinute()

wxDateTime& wxDateTime::SetMinute | ( | unsigned short | minute | ) |

Sets the minute without changing other date components.

## ◆ SetMonth()

wxDateTime& wxDateTime::SetMonth | ( | Month | month | ) |

Sets the month without changing other date components.

## ◆ SetSecond()

wxDateTime& wxDateTime::SetSecond | ( | unsigned short | second | ) |

Sets the second without changing other date components.

## ◆ SetToCurrent()

wxDateTime& wxDateTime::SetToCurrent | ( |  | ) |

Sets the date and time of to the current values.

Same as assigning the result of Now() to this object.

## ◆ SetToLastMonthDay()

wxDateTime& 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.

## ◆ SetToLastWeekDay()

bool wxDateTime::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.

## ◆ SetToNextWeekDay()

wxDateTime& 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.

## ◆ SetToPrevWeekDay()

wxDateTime& 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.

## ◆ SetToWeekDay()

bool wxDateTime::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(wxDateTime::Wed, 2) will set the date to the second Wednesday in the current month and SetToWeekDay(wxDateTime::Sun, -1) will set the date to the last Sunday in the current month.

Note that leaving the month or year parameters as their default values will result in the current month or year being substituted, overwriting any previous values in the wxDateTime object.

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

## ◆ SetToWeekDayInSameWeek()

wxDateTime& 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.

## ◆ SetToWeekOfYear()

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

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.

## ◆ SetToYearDay()

wxDateTime& 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.

## ◆ SetYear()

wxDateTime& wxDateTime::SetYear | ( | int | year | ) |

Sets the year without changing other date components.

## ◆ Subtract() [1/5]

wxDateTime& wxDateTime::Subtract | ( | const wxDateSpan & | diff | ) |

Subtracts the given date span from this object.

## ◆ Subtract() [2/5]

wxDateTime wxDateTime::Subtract | ( | const wxDateSpan & | diff | ) | const

Subtracts the given date span from this object.

## ◆ Subtract() [3/5]

wxTimeSpan wxDateTime::Subtract | ( | const wxDateTime & | dt | ) | const

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

## ◆ Subtract() [4/5]

wxDateTime& wxDateTime::Subtract | ( | const wxTimeSpan & | diff | ) |

Subtracts the given time span from this object.

## ◆ Subtract() [5/5]

wxDateTime wxDateTime::Subtract | ( | const wxTimeSpan & | diff | ) | const

Subtracts the given time span from this object.

## ◆ Today()

static wxDateTime wxDateTime::Today | ( |  | ) |
| static

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

## ◆ ToTimezone()

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

If tz parameter is wxDateTime::Local, no adjustment is performed.

Returns
  The date adjusted by the different between the local and the given time zones.

## ◆ ToUTC()

wxDateTime wxDateTime::ToUTC | ( | bool | noDST = `false` | ) | const

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

## ◆ UNow()

static wxDateTime wxDateTime::UNow | ( |  | ) |
| static

Returns the object corresponding to the current time including the milliseconds.

Like Now(), this method creates the wxDateTime object corresponding to the current moment in local time.

See also
  Now(), wxGetUTCTimeMillis()