The “Invalid” Sentinel and Other Invalid Instances
The Essential Tools Module allows for
RWDateTime instances with an “invalid” state that can be compared to other
RWDateTime instances and can be persisted. The default
RWDateTime constructor constructs an invalid instance, and other construction techniques are available, including the
RWDateTime::invalidSentinel constant. You can pass this constant to the
RWDateTime(rwint64) constructor to create instances of the minimum and maximum
RWDateTime as needed, or you can use it to compare directly with the millisecond count returned by
RWDateTime::milliSeconds().
No other operations work, other than persisting the invalid object and using it in comparisons of equality and inequality. Arithmetic manipulation of an invalid
RWDateTime results in an invalid
RWDateTime. Attempts to use the part extraction functions (
day(),
month(),
extract(), etc.) result in an
RWInternalErr being thrown by
RWTHROW. The
asString() family of functions always return the string
"#INVALID#" when called with an invalid
RWDateTime.
The following examples show several ways to construct an
RWDateTime with an invalid state:
// construct dt1 with invalid state:
RWDateTime dt1;
// construct dt2 with invalid state:
RWDateTime dt2(RWDateTime::invalid);
// construct dt3 with invalid state:
RWDateTime dt3(RWDateTime::invalidSentinel);
// construct dt4 with invalid state:
RWDateTime dt4(RWDate(29,02,1997));