Holds absolute and relative date/time values in Qore with precision to the microsecond.  
 More...
|  | 
| DLLEXPORT | DateTime (bool r=false) | 
|  | constructor for an empty object  More... 
 | 
|  | 
| DLLEXPORT | DateTime (const AbstractQoreZoneInfo *zone, const char *date) | 
|  | constructor for setting the date from a string with a flexible format  More... 
 | 
|  | 
| DLLEXPORT | DateTime (const AbstractQoreZoneInfo *zone, const QoreValue v) | 
|  | constructor for creating an absolute date from a value representing a number of seconds  More... 
 | 
|  | 
| DLLEXPORT | DateTime (const char *date) | 
|  | constructor for setting the date from a string  More... 
 | 
|  | 
| DLLEXPORT | DateTime (const char *date, ExceptionSink *xsink) | 
|  | constructor for setting the date from a string with a flexible format, throws a Qore-language exception if the date string is invalid  More... 
 | 
|  | 
| DLLEXPORT | DateTime (const DateTime &dt) | 
|  | copy constructor 
 | 
|  | 
| DLLEXPORT | DateTime (const QoreValue v) | 
|  | constructor for creating a relative date from a value representing a number of seconds  More... 
 | 
|  | 
| DLLEXPORT | DateTime (const hashdecl tm *tms) | 
|  | constructor for setting an absolute date based on a "hashdecl tm"  More... 
 | 
|  | 
| DLLEXPORT | DateTime (int n_year, int n_month, int n_day, int n_hour=0, int n_minute=0, int n_second=0, short n_ms=0, bool n_relative=false) | 
|  | constructor for setting all parameters  More... 
 | 
|  | 
| DLLEXPORT | DateTime (int64 seconds) | 
|  | constructor for setting an absolute date based on the number of seconds from January 1, 1970  More... 
 | 
|  | 
| DLLEXPORT | DateTime (int64 seconds, int ms) | 
|  | constructor for setting an absolute date based on the number of seconds from January 1, 1970 (plus milliseconds)  More... 
 | 
|  | 
| DLLEXPORT | ~DateTime () | 
|  | destroys the object and frees all memory 
 | 
|  | 
| DLLEXPORT void | addSecondsTo (int64 secs, int us=0) | 
|  | adds the given number of seconds (and microseconds) to the date/time value  More... 
 | 
|  | 
| DLLEXPORT void | format (QoreString &str, const char *fmt) const | 
|  | formats the date/time value to a QoreString  More... 
 | 
|  | 
| DLLEXPORT int | getDay () const | 
|  | returns the day portion of the date-time value (in local time according to the time zone for absolute date/time values)  More... 
 | 
|  | 
| DLLEXPORT int | getDayNumber () const | 
|  | returns the ordinal number of the day in the year for absolute dates, sometimes (mistakenly) referred to as the Julian date  More... 
 | 
|  | 
| DLLEXPORT int | getDayOfWeek () const | 
|  | returns the day of week for the current date (0-6, Sun-Sat)  More... 
 | 
|  | 
| DLLEXPORT int64 | getEpochMicrosecondsUTC () const | 
|  | gets the number of microseconds since January 1, 1970Z for the current date  More... 
 | 
|  | 
| DLLEXPORT int64 | getEpochMillisecondsUTC () const | 
|  | gets the number of milliseconds since January 1, 1970Z for the current date  More... 
 | 
|  | 
| DLLEXPORT int64 | getEpochSeconds () const | 
|  | gets the number of seconds since January 1, 1970 for the current date offset in local time  More... 
 | 
|  | 
| DLLEXPORT int64 | getEpochSecondsUTC () const | 
|  | gets the number of seconds since January 1, 1970Z for the current date  More... 
 | 
|  | 
| DLLEXPORT int | getHour () const | 
|  | returns the hour portion of the date-time value (in local time according to the time zone for absolute date/time values)  More... 
 | 
|  | 
| DLLEXPORT void | getInfo (const AbstractQoreZoneInfo *n_zone, qore_tm &info) const | 
|  | returns the broken-down time in the given time zone (n_zone = 0 means UTC) 
 | 
|  | 
| DLLEXPORT void | getInfo (qore_tm &info) const | 
|  | returns the broken-down time in the current time zone 
 | 
|  | 
| DLLEXPORT void | getISOWeek (int &year, int &week, int &day) const | 
|  | returns the ISO-8601 week information  More... 
 | 
|  | 
| DLLEXPORT int | getMicrosecond () const | 
|  | returns the microsecond portion of the date-time value  More... 
 | 
|  | 
| DLLEXPORT int | getMillisecond () const | 
|  | returns the microsecond portion of the date-time value divided by 1000  More... 
 | 
|  | 
| DLLEXPORT int | getMinute () const | 
|  | returns the minute portion of the date-time value (in local time according to the time zone for absolute date/time values)  More... 
 | 
|  | 
| DLLEXPORT int | getMonth () const | 
|  | returns the month portion of the date-time value (in local time according to the time zone for absolute date/time values)  More... 
 | 
|  | 
| DLLEXPORT int64 | getRelativeMicroseconds () const | 
|  | returns the difference as the number of microseconds between the date/time value and the local time at the moment of the call, for absolute date/time values; for relative date/time values, the duration is converted to microseconds and returned as an integer  More... 
 | 
|  | 
| DLLEXPORT int64 | getRelativeMilliseconds () const | 
|  | returns the difference as the number of milliseconds between the date/time value and the local time at the moment of the call, for absolute date/time values; for relative date/time values, the duration is converted to milliseconds and returned as an integer  More... 
 | 
|  | 
| DLLEXPORT int64 | getRelativeSeconds () const | 
|  | returns the difference as the number of seconds between the date/time value and the local time at the moment of the call for absolute date/time values; for relative date/time values, the duration is converted to seconds and returned as an integer  More... 
 | 
|  | 
| DLLEXPORT double | getRelativeSecondsDouble () const | 
|  | returns the difference as the number of seconds between the date/time value and the local time at the moment of the call for absolute date/time values; for relative date/time values, the duration is converted to seconds and returned as a floating-point value with fractional seconds as digits to the right of the decimal point  More... 
 | 
|  | 
| DLLEXPORT int | getSecond () const | 
|  | returns the second portion of the date-time value (in local time according to the time zone for absolute date/time values)  More... 
 | 
|  | 
| DLLEXPORT void | getTM (hashdecl tm *tms) const | 
|  | sets a "hashdecl tm" from the current date/time value for the time zone for the object; use DateTime::getInfo() instead 
 | 
|  | 
| DLLEXPORT short | getYear () const | 
|  | returns the year portion of the date-time value (in local time according to the time zone for absolute date/time values)  More... 
 | 
|  | 
| DLLEXPORT const AbstractQoreZoneInfo * | getZone () const | 
|  | gets the time zone for the object; returns 0 for relative date/time values 
 | 
|  | 
| DLLEXPORT bool | hasValue () const | 
|  | returns true if the object has a value, false if not (zero value = 1970-01-01Z for absolute times, or all relative components = 0) 
 | 
|  | 
| DLLEXPORT bool | isAbsolute () const | 
|  | returns true if the value is an absolute date-time value  More... 
 | 
|  | 
| DLLEXPORT bool | isRelative () const | 
|  | returns true if the value is a relative date-time value  More... 
 | 
|  | 
| DLLEXPORT void | setDate (const AbstractQoreZoneInfo *n_zone, int n_year, int n_month, int n_day, int n_hour=0, int n_minute=0, int n_second=0, int n_us=0) | 
|  | sets the date to an absolute date/time as given 
 | 
|  | 
| DLLEXPORT void | setDate (const AbstractQoreZoneInfo *zone, const char *str) | 
|  | sets an absolute date value from a time zone pointer and a string with a flexible format  More... 
 | 
|  | 
| DLLEXPORT void | setDate (const AbstractQoreZoneInfo *zone, int64 seconds, int us) | 
|  | sets the absolute date value based on the number of seconds from January 1, 1970 UTC (plus microseconds)  More... 
 | 
|  | 
| DLLEXPORT void | setDate (const char *str) | 
|  | sets an absolute date value from a string with a flexible format  More... 
 | 
|  | 
| DLLEXPORT void | setDate (const char *str, ExceptionSink *xsink) | 
|  | sets an absolute date value from a string with a flexible format  More... 
 | 
|  | 
| DLLEXPORT void | setDate (const DateTime &date) | 
|  | sets the date from a DateTime reference 
 | 
|  | 
| DLLEXPORT void | setDate (const hashdecl tm *tms, short ms=0) | 
|  | sets the absolute date from a "hashdecl tm" pointer and millisecond value 
 | 
|  | 
| DLLEXPORT void | setDate (int64 seconds) | 
|  | sets the absolute date value based on the number of seconds from January 1, 1970  More... 
 | 
|  | 
| DLLEXPORT void | setDate (int64 seconds, int ms) | 
|  | sets the absolute date value based on the number of seconds from January 1, 1970 UTC (plus milliseconds)  More... 
 | 
|  | 
| DLLEXPORT void | setLocalDate (const AbstractQoreZoneInfo *zone, int64 seconds, int us) | 
|  | sets the absolute date value based on the number of seconds from January 1, 1970 in the given time zone (plus microseconds)  More... 
 | 
|  | 
| DLLEXPORT void | setNow () | 
|  | sets the current date and time in the current time zone; current contents are overwritten  More... 
 | 
|  | 
| DLLEXPORT void | setNow (const AbstractQoreZoneInfo *zone) | 
|  | sets the current date and time in the given time zone; current contents are overwritten  More... 
 | 
|  | 
| DLLEXPORT void | setRelativeDate (const char *str) | 
|  | sets a relative date from a string in the format YYYYMMDDHHmmSS 
 | 
|  | 
| DLLEXPORT void | setRelativeDateSeconds (int64 s, int us=0) | 
|  | set the object to a relative date/time value as given in seconds and optionally microseconds 
 | 
|  | 
| DLLEXPORT void | setTime (int h, int m, int s, short ms=0) | 
|  | sets the time from hours, minutes, seconds, and milliseconds  More... 
 | 
|  | 
| DLLEXPORT void | setZone (const AbstractQoreZoneInfo *n_zone) | 
|  | changes the time zone for the time without updating the epoch offset 
 | 
|  | 
| DLLEXPORT DateTime * | unaryMinus () const | 
|  | returns the negative time from the current time 
 | 
|  | 
| DLLEXPORT void | unaryMinusInPlace () | 
|  | converts the current value to the negative of itself 
 | 
|  | 
|  | 
| static DLLEXPORT int | compareDates (const DateTime *left, const DateTime *right) | 
|  | returns -1, 0, or 1 if the left date is less than, equal, or greater than the right date 
 | 
|  | 
| static DLLEXPORT DateTime * | getDateFromISOWeek (int year, int week, int day, ExceptionSink *xsink) | 
|  | returns a DateTime value from ISO-8601 week and day offsets  More... 
 | 
|  | 
| static DLLEXPORT int | getLastDayOfMonth (int month, int year) | 
|  | returns the number of days in the month given according to a proleptic gregorian calendar 
 | 
|  | 
| static DLLEXPORT bool | isLeapYear (int year) | 
|  | returns true if the year passed is a leap year according to a proleptic gregorian calendar 
 | 
|  | 
| static DLLEXPORT DateTime * | makeAbsolute (const AbstractQoreZoneInfo *n_zone, int n_year, int n_month, int n_day, int n_hour=0, int n_minute=0, int n_second=0, int n_us=0) | 
|  | static "constructor" to create an absolute time, including microseconds 
 | 
|  | 
| static DLLEXPORT DateTime * | makeAbsolute (const AbstractQoreZoneInfo *zone, int64 seconds, int us=0) | 
|  | static "constructor" to create an absolute time as an offset from the epoch, including microseconds  More... 
 | 
|  | 
| static DLLEXPORT DateTime * | makeAbsoluteLocal (const AbstractQoreZoneInfo *zone, int64 seconds, int us=0) | 
|  | static "constructor" to create an absolute time as an offset from the given time zone's epoch, including microseconds  More... 
 | 
|  | 
| static DLLEXPORT DateTime * | makeRelative (int n_year, int n_month, int n_day, int n_hour=0, int n_minute=0, int n_second=0, int n_us=0) | 
|  | static "constructor" to create a relative time, including microseconds 
 | 
|  | 
| static DLLEXPORT DateTime * | makeRelativeFromSeconds (int64 n_second, int n_us=0) | 
|  | static "constructor" to create a relative time, including microseconds 
 | 
|  | 
Holds absolute and relative date/time values in Qore with precision to the microsecond. 
Date arithmetic and date formatting is supported by this class. As of qore 0.8.0, the internal representation for absolute date/time values has changed. Now, absolute date/time values are stored internally as a 64-bit offset in seconds since the UNIX epoch (January 1, 1970 UTC), plus a 4-byte integer microseconds offset, plus a pointer to an AbstractQoreZoneInfo object, which gives the time zone information (UTC offset, daylights savings time transitions, if any, etc).
Therefore, for absolute date/time values, it is expensive to call functions that get discrete values for the date (DateTime::getYear(), DateTime::getMonth(), and DateTime::getDay()), because for each call, all broken-down components are calculated for each call. In the case that more than one component of an absolute date/time value is required, it's recommended to call DateTime::getInfo() instead.
Relative date/time values are stored with discrete values for years, months, days, hours, minutes, seconds, and microseconds.
This is a "normal" (i.e. not reference counted) class, for the equivalent Qore value type, see DateTimeNode 
- See also
- DateTimeNode