summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/tools/datetime.hxx3
-rw-r--r--tools/source/datetime/datetime.cxx6
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.