/contrib/ntp/libntp/ymd2yd.c
https://bitbucket.org/freebsd/freebsd-head/ · C · 37 lines · 25 code · 5 blank · 7 comment · 11 complexity · d789ca103b91677e335e20b5de660752 MD5 · raw file
- /*
- * ymd2yd - compute the date in the year from y/m/d
- */
- #include "ntp_fp.h"
- #include "ntp_unixtime.h"
- #include "ntp_stdlib.h"
- /*
- * Tables to compute the day of year from yyyymmdd timecode.
- * Viva la leap.
- */
- static int day1tab[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
- static int day2tab[] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
- int
- ymd2yd(
- int y,
- int m,
- int d
- )
- {
- int i, *t;
- if (m < 1 || m > 12 || d < 1)
- return (-1);
- if (((y%4 == 0) && (y%100 != 0)) || (y%400 == 0))
- t = day2tab; /* leap year */
- else
- t = day1tab; /* not a leap year */
- if (d > t[m - 1])
- return (-1);
- for (i = 0; i < m - 1; i++)
- d += t[i];
- return d;
- }