diff options
-rw-r--r-- | include/tools/datetime.hxx | 3 | ||||
-rw-r--r-- | tools/source/datetime/datetime.cxx | 6 |
2 files changed, 9 insertions, 0 deletions
diff --git a/include/tools/datetime.hxx b/include/tools/datetime.hxx index 2194711dc208..21cb65921d27 100644 --- a/include/tools/datetime.hxx +++ b/include/tools/datetime.hxx @@ -102,6 +102,9 @@ public: TOOLS_DLLPUBLIC friend DateTime operator +( const DateTime& rDateTime, const tools::Time& rTime ); TOOLS_DLLPUBLIC friend DateTime operator -( const DateTime& rDateTime, const tools::Time& rTime ); TOOLS_DLLPUBLIC friend double operator -( const DateTime& rDateTime1, const DateTime& rDateTime2 ); + /** Same as friend operator-() to be able to disable operator-() to find + places where tools::Duration could be used instead. */ + static double Sub( const DateTime& rDateTime1, const DateTime& rDateTime2 ); TOOLS_DLLPUBLIC friend sal_Int64 operator -( const DateTime& rDateTime, const Date& rDate ) { return static_cast<const Date&>(rDateTime) - rDate; } /** Duration can be negative, so adding it will subtract its value. */ diff --git a/tools/source/datetime/datetime.cxx b/tools/source/datetime/datetime.cxx index bb4c1ff173a5..f2e5a0e69c57 100644 --- a/tools/source/datetime/datetime.cxx +++ b/tools/source/datetime/datetime.cxx @@ -196,6 +196,12 @@ DateTime operator +( const DateTime& rDateTime, double fTimeInDays ) double operator -( const DateTime& rDateTime1, const DateTime& rDateTime2 ) { + return DateTime::Sub( rDateTime1, rDateTime2); +} + +// static +double DateTime::Sub( const DateTime& rDateTime1, const DateTime& rDateTime2 ) +{ if (static_cast<const tools::Time&>(rDateTime1) != static_cast<const tools::Time&>(rDateTime2)) { // Use Duration to diminish floating point accuracy errors. |