Base module

LocalDateTime

This class represents an instant in local time (as opposed to UTC), expressed in years, months, days, hours, minutes, seconds and milliseconds based on the Gregorian calendar.

LocalDateTime

#include <icy/datetime.h>

This class represents an instant in local time (as opposed to UTC), expressed in years, months, days, hours, minutes, seconds and milliseconds based on the Gregorian calendar.

In addition to the date and time, the class also maintains a time zone differential, which denotes the difference in seconds from UTC to local time, i.e. UTC = local time - time zone differential.

Although LocalDateTime supports relational and arithmetic operators, all date/time comparisons and date/time arithmetics should be done in UTC, using the DateTime or Timestamp class for better performance. The relational operators normalize the dates/times involved to UTC before carrying out the comparison.

The time zone differential is based on the input date and time and current time zone. A number of constructors accept an explicit time zone differential parameter. These should not be used since daylight savings time processing is impossible since the time zone is unknown. Each of the constructors accepting a tzd parameter have been marked as deprecated and may be removed in a future revision.

Public Methods

ReturnNameDescription
LocalDateTimeCreates a LocalDateTime with the current date/time for the current time zone.
LocalDateTimeCreates a LocalDateTime for the given Gregorian local date and time.
LocalDateTime@ deprecated Creates a LocalDateTime for the given Gregorian date and time in the time zone denoted by the time zone differential in tzd.
LocalDateTimeCreates a LocalDateTime from the UTC time given in dateTime, using the time zone differential of the current time zone.
LocalDateTime@ deprecated Creates a LocalDateTime from the UTC time given in dateTime, using the given time zone differential. Adjusts dateTime for the given time zone differential.
LocalDateTime@ deprecated Creates a LocalDateTime from the UTC time given in dateTime, using the given time zone differential. If adjust is true, adjusts dateTime for the given time zone differential.
LocalDateTimeCreates a LocalDateTime for the given Julian day in the local time zone.
LocalDateTime@ deprecated Creates a LocalDateTime for the given Julian day in the time zone denoted by the time zone differential in tzd.
LocalDateTimeCopy constructor. Creates the LocalDateTime from another one.
~LocalDateTimeDestroys the LocalDateTime.
LocalDateTime &operator=Assigns another LocalDateTime.
LocalDateTime &operator=Assigns a timestamp.
LocalDateTime &operator=Assigns a Julian day in the local time zone.
LocalDateTime &assignAssigns a Gregorian local date and time.
LocalDateTime &assign@ deprecated Assigns a Gregorian local date and time in the time zone denoted by the time zone differential in tzd.
LocalDateTime &assign@ deprecated Assigns a Julian day in the time zone denoted by the time zone differential in tzd.
voidswapSwaps the LocalDateTime with another one.
intyear const inlineReturns the year.
intmonth const inlineReturns the month (1 to 12).
intweek const inlineReturns the week number within the year. FirstDayOfWeek should be either SUNDAY (0) or MONDAY (1). The returned week number will be from 0 to 53. Week number 1 is the week containing January 4. This is in accordance to ISO 8601.
intday const inlineReturns the day witin the month (1 to 31).
intdayOfWeek const inlineReturns the weekday (0 to 6, where 0 = Sunday, 1 = Monday, ..., 6 = Saturday).
intdayOfYear const inlineReturns the number of the day in the year. January 1 is 1, February 1 is 32, etc.
inthour const inlineReturns the hour (0 to 23).
inthourAMPM const inlineReturns the hour (0 to 12).
boolisAM const inlineReturns true if hour < 12;.
boolisPM const inlineReturns true if hour >= 12.
intminute const inlineReturns the minute (0 to 59).
intsecond const inlineReturns the second (0 to 59).
intmillisecond const inlineReturns the millisecond (0 to 999)
intmicrosecond const inlineReturns the microsecond (0 to 999)
doublejulianDay const inlineReturns the julian day for the date.
inttzd const inlineReturns the time zone differential.
DateTimeutc constReturns the UTC equivalent for the local date and time.
Timestamptimestamp const inlineReturns the date and time expressed as a Timestamp.
Timestamp::UtcTimeValutcTime const inlineReturns the UTC equivalent for the local date and time.
booloperator== const
booloperator!= const
booloperator< const
booloperator<= const
booloperator> const
booloperator>= const
LocalDateTimeoperator+ const
LocalDateTimeoperator- const
Timespanoperator- const
LocalDateTime &operator+=
LocalDateTime &operator-=

LocalDateTime

LocalDateTime()

Creates a LocalDateTime with the current date/time for the current time zone.


LocalDateTime

LocalDateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, int microsecond)

Creates a LocalDateTime for the given Gregorian local date and time.

  • year is from 0 to 9999.

  • month is from 1 to 12.

  • day is from 1 to 31.

  • hour is from 0 to 23.

  • minute is from 0 to 59.

  • second is from 0 to 59.

  • millisecond is from 0 to 999.

  • microsecond is from 0 to 999.


LocalDateTime

LocalDateTime(int tzd, int year, int month, int day, int hour, int minute, int second, int millisecond, int microsecond)

@ deprecated Creates a LocalDateTime for the given Gregorian date and time in the time zone denoted by the time zone differential in tzd.

  • tzd is in seconds.

  • year is from 0 to 9999.

  • month is from 1 to 12.

  • day is from 1 to 31.

  • hour is from 0 to 23.

  • minute is from 0 to 59.

  • second is from 0 to 59.

  • millisecond is from 0 to 999.

  • microsecond is from 0 to 999.


LocalDateTime

LocalDateTime(const DateTime & dateTime)

Creates a LocalDateTime from the UTC time given in dateTime, using the time zone differential of the current time zone.


LocalDateTime

LocalDateTime(int tzd, const DateTime & dateTime)

@ deprecated Creates a LocalDateTime from the UTC time given in dateTime, using the given time zone differential. Adjusts dateTime for the given time zone differential.


LocalDateTime

LocalDateTime(int tzd, const DateTime & dateTime, bool adjust)

@ deprecated Creates a LocalDateTime from the UTC time given in dateTime, using the given time zone differential. If adjust is true, adjusts dateTime for the given time zone differential.


LocalDateTime

LocalDateTime(double julianDay)

Creates a LocalDateTime for the given Julian day in the local time zone.


LocalDateTime

LocalDateTime(int tzd, double julianDay)

@ deprecated Creates a LocalDateTime for the given Julian day in the time zone denoted by the time zone differential in tzd.


LocalDateTime

LocalDateTime(const LocalDateTime & dateTime)

Copy constructor. Creates the LocalDateTime from another one.


~LocalDateTime

~LocalDateTime()

Destroys the LocalDateTime.


operator=

LocalDateTime & operator=(const LocalDateTime & dateTime)

Assigns another LocalDateTime.


operator=

LocalDateTime & operator=(const Timestamp & timestamp)

Assigns a timestamp.


operator=

LocalDateTime & operator=(double julianDay)

Assigns a Julian day in the local time zone.


assign

LocalDateTime & assign(int year, int month, int day, int hour, int minute, int second, int millisecond, int microseconds)

Assigns a Gregorian local date and time.

  • year is from 0 to 9999.

  • month is from 1 to 12.

  • day is from 1 to 31.

  • hour is from 0 to 23.

  • minute is from 0 to 59.

  • second is from 0 to 59.

  • millisecond is from 0 to 999.

  • microsecond is from 0 to 999.


assign

LocalDateTime & assign(int tzd, int year, int month, int day, int hour, int minute, int second, int millisecond, int microseconds)

@ deprecated Assigns a Gregorian local date and time in the time zone denoted by the time zone differential in tzd.

  • tzd is in seconds.

  • year is from 0 to 9999.

  • month is from 1 to 12.

  • day is from 1 to 31.

  • hour is from 0 to 23.

  • minute is from 0 to 59.

  • second is from 0 to 59.

  • millisecond is from 0 to 999.

  • microsecond is from 0 to 999.


assign

LocalDateTime & assign(int tzd, double julianDay)

@ deprecated Assigns a Julian day in the time zone denoted by the time zone differential in tzd.


swap

void swap(LocalDateTime & dateTime)

Swaps the LocalDateTime with another one.


year

const inline

inline int year() const

Returns the year.


month

const inline

inline int month() const

Returns the month (1 to 12).


week

const inline

inline int week(int firstDayOfWeek) const

Returns the week number within the year. FirstDayOfWeek should be either SUNDAY (0) or MONDAY (1). The returned week number will be from 0 to 53. Week number 1 is the week containing January 4. This is in accordance to ISO 8601.

The following example assumes that firstDayOfWeek is MONDAY. For 2005, which started on a Saturday, week 1 will be the week starting on Monday, January 3. January 1 and 2 will fall within week 0 (or the last week of the previous year).

For 2007, which starts on a Monday, week 1 will be the week startung on Monday, January 1. There will be no week 0 in 2007.


day

const inline

inline int day() const

Returns the day witin the month (1 to 31).


dayOfWeek

const inline

inline int dayOfWeek() const

Returns the weekday (0 to 6, where 0 = Sunday, 1 = Monday, ..., 6 = Saturday).


dayOfYear

const inline

inline int dayOfYear() const

Returns the number of the day in the year. January 1 is 1, February 1 is 32, etc.


hour

const inline

inline int hour() const

Returns the hour (0 to 23).


hourAMPM

const inline

inline int hourAMPM() const

Returns the hour (0 to 12).


isAM

const inline

inline bool isAM() const

Returns true if hour < 12;.


isPM

const inline

inline bool isPM() const

Returns true if hour >= 12.


minute

const inline

inline int minute() const

Returns the minute (0 to 59).


second

const inline

inline int second() const

Returns the second (0 to 59).


millisecond

const inline

inline int millisecond() const

Returns the millisecond (0 to 999)


microsecond

const inline

inline int microsecond() const

Returns the microsecond (0 to 999)


julianDay

const inline

inline double julianDay() const

Returns the julian day for the date.


tzd

const inline

inline int tzd() const

Returns the time zone differential.


utc

const

DateTime utc() const

Returns the UTC equivalent for the local date and time.


timestamp

const inline

inline Timestamp timestamp() const

Returns the date and time expressed as a Timestamp.


utcTime

const inline

inline Timestamp::UtcTimeVal utcTime() const

Returns the UTC equivalent for the local date and time.


operator==

const

bool operator==(const LocalDateTime & dateTime) const

operator!=

const

bool operator!=(const LocalDateTime & dateTime) const

operator<

const

bool operator<(const LocalDateTime & dateTime) const

operator<=

const

bool operator<=(const LocalDateTime & dateTime) const

operator>

const

bool operator>(const LocalDateTime & dateTime) const

operator>=

const

bool operator>=(const LocalDateTime & dateTime) const

operator+

const

LocalDateTime operator+(const Timespan & span) const

operator-

const

LocalDateTime operator-(const Timespan & span) const

operator-

const

Timespan operator-(const LocalDateTime & dateTime) const

operator+=

LocalDateTime & operator+=(const Timespan & span)

operator-=

LocalDateTime & operator-=(const Timespan & span)

Protected Methods

ReturnNameDescription
LocalDateTime
voiddetermineTzdRecalculate the tzd based on the _dateTime member based on the current timezone using the Standard C runtime functions. If adjust is true, then adjustForTzd() is called after the differential is calculated.
voidadjustForTzd inlineAdjust the _dateTime member based on the _tzd member.
std::time_tdstOffset constDetermine the DST offset for the current date/time.

LocalDateTime

LocalDateTime(Timestamp::UtcTimeVal utcTime, Timestamp::TimeDiff diff, int tzd)

determineTzd

void determineTzd(bool adjust)

Recalculate the tzd based on the _dateTime member based on the current timezone using the Standard C runtime functions. If adjust is true, then adjustForTzd() is called after the differential is calculated.


adjustForTzd

inline

inline void adjustForTzd()

Adjust the _dateTime member based on the _tzd member.


dstOffset

const

std::time_t dstOffset(int & dstOffset) const

Determine the DST offset for the current date/time.

Private Attributes

ReturnNameDescription
DateTime_dateTime
int_tzd

_dateTime

DateTime _dateTime

_tzd

int _tzd