From d68a51680f29afddac040dbebf1eeb5c4612ffa9 Mon Sep 17 00:00:00 2001 From: Antonius Hellmann Date: Fri, 4 May 2007 07:37:19 +0000 Subject: date calculation corrected, fixes #7096 and #7097 git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13318 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/rtc/rtc_as3514.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'firmware/drivers') diff --git a/firmware/drivers/rtc/rtc_as3514.c b/firmware/drivers/rtc/rtc_as3514.c index 9b8f9c330c..2190b20a53 100644 --- a/firmware/drivers/rtc/rtc_as3514.c +++ b/firmware/drivers/rtc/rtc_as3514.c @@ -68,13 +68,13 @@ int rtc_read_datetime(unsigned char* buf) year = 1980; while(seconds>=LEAP_YEAR_SECONDS) { - year++; - if(is_leapyear(year)){ seconds -= LEAP_YEAR_SECONDS; } else { seconds -= YEAR_SECONDS; } + + year++; } if(is_leapyear(year)) { @@ -102,6 +102,7 @@ int rtc_read_datetime(unsigned char* buf) /* Month Day */ buf[4] = seconds/DAY_SECONDS; seconds -= buf[4]*DAY_SECONDS; + buf[4]++; /* 1 ... 31 */ /* Hour */ buf[2] = seconds/HOUR_SECONDS; @@ -146,7 +147,7 @@ int rtc_write_datetime(unsigned char* buf) } /* Number of days in years gone by since 1-Jan-1980 */ - year_days = 365*(buf[6]+20) + buf[6]/4 + 6; + year_days = 365*(buf[6]+20) + (buf[6]-1)/4 + 6; /* Convert to seconds since 1-Jan-1980 */ seconds = buf[0] -- cgit v1.2.3