File: ymd2yd.c

package info (click to toggle)
ntp 1%3A4.2.6.p5%2Bdfsg-7
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 22,056 kB
  • sloc: ansic: 144,116; sh: 12,381; perl: 1,401; makefile: 1,274; yacc: 1,034; awk: 417; asm: 37; sed: 7
file content (37 lines) | stat: -rw-r--r-- 677 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/*
 * 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;
}