diff --git a/uppsrc/Core/TimeDate.cpp b/uppsrc/Core/TimeDate.cpp index 5278e06ef..abd49f068 100644 --- a/uppsrc/Core/TimeDate.cpp +++ b/uppsrc/Core/TimeDate.cpp @@ -230,12 +230,16 @@ void Date::Set(int d) { day = d + 1; } +int Date::Compare(Date b) const +{ + int q = SgnCompare(year, b.year); + if(q) return q; + q = SgnCompare(month, b.month); + return q ? q : SgnCompare(day, b.day); +} + bool operator<(Date a, Date b) { - if(a.year < b.year) return true; - if(a.year > b.year) return false; - if(a.month < b.month) return true; - if(a.month > b.month) return false; - return a.day < b.day; + return a.Compare(b) < 0; } int operator-(Date a, Date b) { return a.Get() - b.Get(); } diff --git a/uppsrc/Core/TimeDate.h b/uppsrc/Core/TimeDate.h index 4b5931678..4e62092ce 100644 --- a/uppsrc/Core/TimeDate.h +++ b/uppsrc/Core/TimeDate.h @@ -15,6 +15,8 @@ struct Date : RelOps< Date, Moveable > { static Date Low() { return Date(-4000, 1, 1); } static Date High() { return Date(4000, 1, 1); } + + int Compare(Date b) const; Date() { year = -32768; day = month = 0; } Date(const Nuller&) { year = -32768; day = month = 0; }