vcl/source/control/field2.cxx |   74 +-----------------------------------------
 1 file changed, 3 insertions(+), 71 deletions(-)

New commits:
commit 0d3ffda9615ad48679e61d606004de65154cdbfb
Author:     Eike Rathke <er...@redhat.com>
AuthorDate: Wed Jul 7 00:22:15 2021 +0200
Commit:     Eike Rathke <er...@redhat.com>
CommitDate: Wed Jul 7 10:38:57 2021 +0200

    DateFormatter: use Date::AddDays(), AddMonths(), AddYears()
    
    ... that do all the checks and normalize.
    
    Change-Id: Id3ffcf5146b25020ec808aa70240953d39328a82
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118540
    Reviewed-by: Eike Rathke <er...@redhat.com>
    Tested-by: Jenkins

diff --git a/vcl/source/control/field2.cxx b/vcl/source/control/field2.cxx
index 64cc39dfb276..d73e2d8900c4 100644
--- a/vcl/source/control/field2.cxx
+++ b/vcl/source/control/field2.cxx
@@ -1594,87 +1594,19 @@ OUString DateFormatter::ImplGetDateAsText( const Date& 
rDate ) const
 static void ImplDateIncrementDay( Date& rDate, bool bUp )
 {
     DateFormatter::ExpandCentury( rDate );
-
-    if ( bUp )
-    {
-        if ( (rDate.GetDay() != 31) || (rDate.GetMonth() != 12) || 
(rDate.GetYear() != SAL_MAX_INT16) )
-            ++rDate;
-    }
-    else
-    {
-        if ( (rDate.GetDay() != 1 ) || (rDate.GetMonth() != 1) || 
(rDate.GetYear() != SAL_MIN_INT16) )
-            --rDate;
-    }
+    rDate.AddDays( bUp ? 1 : -1 );
 }
 
 static void ImplDateIncrementMonth( Date& rDate, bool bUp )
 {
     DateFormatter::ExpandCentury( rDate );
-
-    sal_uInt16 nMonth = rDate.GetMonth();
-    sal_Int16 nYear = rDate.GetYear();
-    if ( bUp )
-    {
-        if ( (nMonth == 12) && (nYear < SAL_MAX_INT16) )
-        {
-            rDate.SetMonth( 1 );
-            rDate.SetYear( rDate.GetNextYear() );
-        }
-        else
-        {
-            if ( nMonth < 12 )
-                rDate.SetMonth( nMonth + 1 );
-        }
-    }
-    else
-    {
-        if ( (nMonth == 1) && (nYear > SAL_MIN_INT16) )
-        {
-            rDate.SetMonth( 12 );
-            rDate.SetYear( rDate.GetPrevYear() );
-        }
-        else
-        {
-            if ( nMonth > 1 )
-                rDate.SetMonth( nMonth - 1 );
-        }
-    }
-
-    sal_uInt16 nDaysInMonth = Date::GetDaysInMonth( rDate.GetMonth(), 
rDate.GetYear());
-    if ( rDate.GetDay() > nDaysInMonth )
-        rDate.SetDay( nDaysInMonth );
+    rDate.AddMonths( bUp ? 1 : -1 );
 }
 
 static void ImplDateIncrementYear( Date& rDate, bool bUp )
 {
     DateFormatter::ExpandCentury( rDate );
-
-    sal_Int16 nYear = rDate.GetYear();
-    sal_uInt16 nMonth = rDate.GetMonth();
-    if ( bUp )
-    {
-        if ( nYear < SAL_MAX_INT16 )
-            rDate.SetYear( rDate.GetNextYear() );
-    }
-    else
-    {
-        if ( nYear > SAL_MIN_INT16 )
-            rDate.SetYear( rDate.GetPrevYear() );
-    }
-    if (nMonth != 2)
-        return;
-
-    // Handle February 29 from leap year to non-leap year.
-    sal_uInt16 nDay = rDate.GetDay();
-    if (nDay > 28)
-    {
-        // The check would not be necessary if it was guaranteed that the
-        // date was valid before and actually was a leap year,
-        // de-/incrementing a leap year with 29 always results in 28.
-        sal_uInt16 nDaysInMonth = Date::GetDaysInMonth( nMonth, 
rDate.GetYear());
-        if (nDay > nDaysInMonth)
-            rDate.SetDay( nDaysInMonth);
-    }
+    rDate.AddYears( bUp ? 1 : -1 );
 }
 
 bool DateFormatter::ImplAllowMalformedInput() const
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to