XmlDateTime Class
A primitive type to a represent a date/time as defined by the XML w3c

Base Classes:
Implemented interfaces:
Date and Time manipulation class provided as part of the Liquid XML Data Binding Runtime.

Supports the W3C XML Schema specification subset of the ISO 8601 standard.
The date uses the proleptic Gregorian calendar, this means that dates previous to the invent
of the Gregorian calendar are still held as Gregorian dates.

The Minimum Date represents -9999-12-31T23:59:59.999999999
The Maximum Date represents 9999-12-31T23:59:59.999999999

NOTE: XmlDateTime uses the XML Schema formula for proleptic Gregorian calendar where year 0 is illegal and -4 (4BC) as a leap year.

The Type of value held in the DateTime will differ depending on the way the DateTime is constructed. The Type
value is immutable and is taken from the XML Schema subset of the ISO 8601 standard as follows:

dateTime comprises [-]CCYY-MM-DDThh:mm:ss[.ff][[Z]|[[+|-]hh:mm]]
date comprises [-]CCYY-MM-DD[[Z]|[[+|-]hh:mm]]
gDay comprises ---DD[[Z]|[[+|-]hh:mm]]
gMonth comprises --MM[[Z]|[[+|-]hh:mm]]
gYear comprises [-]CCYY[[Z]|[[+|-]hh:mm]]
gMonthDay comprises --MM-DD[[Z]|[[+|-]hh:mm]]
gYearMonth comprises [-]CCYY-MM[[Z]|[[+|-]hh:mm]]
time comprises hh:mm:ss[.ff][[Z]|[[+|-]hh:mm]]

The parts in [...] are optional, everything else is mandatory where:

'+', '-', ':', '.', 'T' and 'Z' = literal values
CCYY = Year (-9999 <= CCYY <= 9999 && CCYY != 0000)
MM = Month (01 <= MM <= 12)
DD = Day (01 <= DD <= DaysInMonth)
hh = Hour (00 <= hh <= 23)
mm = Minute (00 <= mm <= 59)
ss = Second (00 <= ss <= 59)
ff = Fraction of Second (0 <= ff <= 999999999)

  Members Description  
    Clone returns a copy of the object  
    CompareTo Compares this date with another XmlDateTime  
    Equals Compares this date with another XmlDateTime  
    Normalize Normalizes the date (removing any time zone)  
    GetCurrentTime Static Method, returns a XmlDateTime with the current time.  
    ParseISO8601Date Populates this XmlDateTime with the value specified as a valid XML Schema date, gDay, gMonth, gYear, gMonthDay or gYearMonth.  
    ParseISO8601DateTime Populates this XmlDateTime with the value specified as a valid XML Schema dateTime.  
    ParseISO8601Time Populates this XmlDateTime with the value specified as a valid XML Schema time.  
    ParseXSDDate Populates this XmlDateTime with the value specified as a valid XML Schema date, gDay, gMonth, gYear, gMonthDay or gYearMonth.  
    ParseXSDDateTime Populates this XmlDateTime with the value specified as a valid XML Schema dateTime.  
    ParseXSDTime Populates this XmlDateTime with the value specified as a valid XML Schema time.  
    SetDate Populates this XmlDateTime as type date.  
    SetDateTime Populates this XmlDateTime as type dateTime.  
    SetFracTime Populates this XmlDateTime as type time.  
    SetGDay Populates this XmlDateTime as type gDay.  
    SetGMonthDay Populates this XmlDateTime as type gMonthDay  
    SetGYearMonth Populates this XmlDateTime as type gYearMonth.  
    SetGYear Populates this XmlDateTime as type gYear.  
    SetTime Populates this XmlDateTime as type time.  
    SetTimeZone Specifies the TimeZone for this XmlDateTime to use.  
    SetUTC Specifies this XmlDateTime is UTC.  
    ToString Returns a std::string representation of this XmlDateTime.  
    XmlDateTime Constructor for XmlDateTime  
    operator== Compares this XmlDateTime to another XmlDateTime  
    operator!= Compares this XmlDateTime with another XmlDateTime  
    operator- Creates a new XmlDateTime containing this XmlDateTime - XmlDateTimeSpan value  
    operator+ Creates a new XmlDateTime containing this XmlDateTime + XmlDateTimeSpan value  
    operator> Compares this XmlDateTime with another XmlDateTime  
    operator< Compares this XmlDateTime with another XmlDateTime  
    operator>= Compares this XmlDateTime with another XmlDateTime  
    operator<= Compares this XmlDateTime with another XmlDateTime  
    AsDateTime Gets as a System.DateTime  
    Day Gets/Sets the Day part of the time  
    DayOfWeek Gets the Day of the Week  
    DayOfYear Gets the Day of the Year  
    HasTimeZone Returns true if the TimeZone part of the XmlDateTime is been used.  
    Hour Get/Sets the Hour part of the time  
    IsUTC Returns true if the UTC part of the XmlDateTime is been used.  
    MicroSecond Get/Sets the Micro-Second (10^-6) part of the time  
    MilliSecond Get/Sets the Milli-Second (10^-3) part of the time  
    Minute Get/Sets the Minute part of the time  
    Month Get/Sets the Month part of the date. Jan = 1  
    NanoSecond Get/Sets the Nano-Second (10^-9) part of the time  
    RealSecond Get/Sets the Second part of the time as a real number including Fraction parts.  
    Second Get/Sets the Second part of the time  
    ToString Gets the object as a string.  
    Type Gets the type of this XmlDateTime  
    ZoneHour Gets the Hour part of the time zone.  
    ZoneMinute Gets the Minute part of the time