From c88fd58c9107a25a7fc8ecb746bc118c8e1a9132 Mon Sep 17 00:00:00 2001 From: Jason Harris Date: Thu, 19 Aug 2004 04:09:41 +0000 Subject: [PATCH] Fix highlighting of the selected date in the ExtDatePicker widget for years < 2000. The highlighted date was off by one week because of a bug in ExtDate::dayOfWeek(). Also, make ExtDate::addMonths() more robust. This time I actually committed to the correct branch... (TO BE BACKPORTED) CCMAIL: kstars-devel@kde.org svn path=/trunk/kdeedu/libkdeedu/; revision=338991 --- extdate/extdatetime.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/extdate/extdatetime.cpp b/extdate/extdatetime.cpp index 346df7d..34fd8cc 100644 --- a/extdate/extdatetime.cpp +++ b/extdate/extdatetime.cpp @@ -280,6 +280,7 @@ int ExtDate::dayOfWeek() const { //JD 2451545 (01 Jan 2000) was a Saturday, which is dayOfWeek=6. int a_day = (( jd() - 2451545 + 6 ) % 7); + if ( a_day < 0 ) a_day += 7; return (a_day == 0) ? 7 : a_day; } @@ -516,9 +517,14 @@ ExtDate ExtDate::addDays( int days ) const ExtDate ExtDate::addMonths( int months ) const { - int a_month = month() + months; - int a_year = year() + (a_month - 1)/12; // month : [1..12] - a_month = 1 + (a_month -1) % 12; + int a_month = month() + months%12; + int a_year = year() + int(months/12); + + while ( a_month < 1 ) { + a_month += 12; + a_year--; + } + return ExtDate(a_year, a_month, day()); } -- 2.47.3