Fix leap year calculations in parse_to_unixtime()
This commit is contained in:
parent
2838466c09
commit
a8611821d7
@ -605,7 +605,9 @@ parse_iodone(parseio)
|
|||||||
/*
|
/*
|
||||||
* convert a struct clock to UTC since Jan, 1st 1970 0:00 (the UNIX EPOCH)
|
* convert a struct clock to UTC since Jan, 1st 1970 0:00 (the UNIX EPOCH)
|
||||||
*/
|
*/
|
||||||
#define dysize(x) ((x) % 4 ? 365 : ((x % 400) ? 365 :366))
|
#define dysize(x) (((x) % 4) ? 365 : \
|
||||||
|
(((x) % 100) ? : 366 \
|
||||||
|
(((x) % 400) ? 365 : 366)))
|
||||||
|
|
||||||
time_t
|
time_t
|
||||||
parse_to_unixtime(clock, cvtrtc)
|
parse_to_unixtime(clock, cvtrtc)
|
||||||
@ -649,8 +651,8 @@ parse_to_unixtime(clock, cvtrtc)
|
|||||||
return -1; /* bad month */
|
return -1; /* bad month */
|
||||||
}
|
}
|
||||||
/* adjust leap year */
|
/* adjust leap year */
|
||||||
if (clock->month >= 3 && dysize(clock->year) == 366)
|
if (clock->month < 3 && dysize(clock->year) == 366)
|
||||||
t++;
|
t--;
|
||||||
|
|
||||||
for (i = 1; i < clock->month; i++)
|
for (i = 1; i < clock->month; i++)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user