diff --git a/src/mtime_timedelta.c b/src/mtime_timedelta.c index 9ca234856eccf410b1a45d72aa24b156418ff888..090897ea9496f69670aac2d8b73856636710f508 100644 --- a/src/mtime_timedelta.c +++ b/src/mtime_timedelta.c @@ -555,13 +555,11 @@ localTimeDeltaToJulianDelta_StandardTimeDelta_CalTypeGREGORIAN(struct _timedelta ndiny = NO_OF_DAYS_IN_A_YEAR_FOR_CAL_TYPE365; } - int64_t i = 0L; - /* Fast-Fwd >= 400 */ - for (i = base_dt->date.year; ((base_dt->date.year + td->year - i) >= 400); i = i + 400) - { - jd_return->day = jd_return->day + NO_OF_DAYS_IN_400_YEARS; - } + int numberOf400YearPeriods = td->year / 400; + int64_t i = base_dt->date.year + numberOf400YearPeriods * 400; + jd_return->day = jd_return->day + numberOf400YearPeriods * NO_OF_DAYS_IN_400_YEARS; + /* The year from (target date - 399) to base_date + delta years - 1 */ for (; i < base_dt->date.year + td->year; i++) @@ -621,13 +619,10 @@ localTimeDeltaToJulianDelta_StandardTimeDelta_CalTypeGREGORIAN(struct _timedelta ndiny = NO_OF_DAYS_IN_A_YEAR_FOR_CAL_TYPE365; } - int64_t i = 0L; - - /* Fast-Fwd: >= 400 */ - for (i = base_dt->date.year; (base_dt->date.year - td->year - i <= -400 ); i = i - 400) - { - jd_return->day = jd_return->day - NO_OF_DAYS_IN_400_YEARS; - } + /* Fast-Fwd >= 400 */ + int numberOf400YearPeriods = td->year / -400; + int64_t i = base_dt->date.year + numberOf400YearPeriods * -400; + jd_return->day = jd_return->day - numberOf400YearPeriods * NO_OF_DAYS_IN_400_YEARS; /* The year from (target date + 399) to base_date - delta years + 1 */ @@ -806,14 +801,14 @@ julianDeltaToTimeDelta(struct _juliandelta* jd, struct _datetime* base_dt, struc /* Initialize to 0. */ td_return->year = 0; - /* Fast-Fwd: >= 400 */ - while (days >= NO_OF_DAYS_IN_400_YEARS) - { - td_return->year = td_return->year + 400; - j = j + 400; - days = days - NO_OF_DAYS_IN_400_YEARS; - - }; + /* Fast-Fwd >= 400 */ + int numberOf400YearPeriods; + if (numberOf400YearPeriods = days / NO_OF_DAYS_IN_400_YEARS) + { + td_return->year = td_return->year + numberOf400YearPeriods * 400; + j = j + numberOf400YearPeriods * 400; + days = days - numberOf400YearPeriods * NO_OF_DAYS_IN_400_YEARS; + } do { @@ -906,14 +901,14 @@ julianDeltaToTimeDelta(struct _juliandelta* jd, struct _datetime* base_dt, struc /* Initialize. */ td_return->year = 0; - /* Fast-Fwd: >= 400 */ - while (days >= NO_OF_DAYS_IN_400_YEARS) - { - td_return->year = td_return->year + 400; - j = j - 400; - days = days - NO_OF_DAYS_IN_400_YEARS; - - }; + /* Fast-Fwd >= 400 */ + int numberOf400YearPeriods; + if(numberOf400YearPeriods = days / NO_OF_DAYS_IN_400_YEARS) + { + td_return->year = td_return->year + numberOf400YearPeriods * 400; + j = j - numberOf400YearPeriods * 400; + days = days - numberOf400YearPeriods * NO_OF_DAYS_IN_400_YEARS; + } do {