DateTimeSpan DateTimeSpan::operator-(const DateTimeSpan& dateSpan) const { DateTimeSpan dateSpanTemp; // If either operand Null, result Null if (GetStatus() == null || dateSpan.GetStatus() == null) { dateSpanTemp.SetStatus(null); return dateSpanTemp; } // If either operand Invalid, result Invalid if (GetStatus() == invalid || dateSpan.GetStatus() == invalid) { dateSpanTemp.SetStatus(invalid); return dateSpanTemp; } // Subtract spans and validate within legal range dateSpanTemp.span_ = span_ - dateSpan.span_; dateSpanTemp.CheckRange(); return dateSpanTemp; }
DateTimeSpan DateTimeSpan::operator+(const DateTimeSpan& dateSpan) const { DateTimeSpan dateSpanTemp; // If either operand Null, result Null if (GetStatus() == null || dateSpan.GetStatus() == null) { dateSpanTemp.SetStatus(null); return dateSpanTemp; } // If either operand Invalid, result Invalid if (GetStatus() == invalid || dateSpan.GetStatus() == invalid) { dateSpanTemp.SetStatus(invalid); return dateSpanTemp; } // Add spans and validate within legal range dateSpanTemp.m_span = m_span + dateSpan.m_span; dateSpanTemp.CheckRange(); return dateSpanTemp; }
DateTimeSpan DateTime::operator-(const DateTime& date) const { DateTimeSpan spanResult; // If either operand NULL, result NULL if (GetStatus() == null || date.GetStatus() == null) { spanResult.SetStatus(DateTimeSpan::null); return spanResult; } // If either operand invalid, result invalid if (GetStatus() == invalid || date.GetStatus() == invalid) { spanResult.SetStatus(DateTimeSpan::invalid); return spanResult; } // Return result (span can't be invalid, so don't check range) return DoubleFromDate(dt_) - DoubleFromDate(date.dt_); }