]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - lib/libcalendar/calendar.3
Add man page for nfslockd.
[FreeBSD/FreeBSD.git] / lib / libcalendar / calendar.3
1 .\" Copyright (c) 1997 Wolfgang Helbig
2 .\" All rights reserved.
3 .\"
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
6 .\" are met:
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\"    notice, this list of conditions and the following disclaimer.
9 .\" 2. Redistributions in binary form must reproduce the above copyright
10 .\"    notice, this list of conditions and the following disclaimer in the
11 .\"    documentation and/or other materials provided with the distribution.
12 .\"
13 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23 .\" SUCH DAMAGE.
24 .\"
25 .Dd November 29, 1997
26 .Dt CALENDAR 3
27 .Os
28 .Sh NAME
29 .Nm easterg ,
30 .Nm easterog ,
31 .Nm easteroj ,
32 .Nm gdate ,
33 .Nm jdate ,
34 .Nm ndaysg ,
35 .Nm ndaysj ,
36 .Nm week ,
37 .Nm weekday
38 .Nd Calendar arithmetic for the Christian era
39 .Sh LIBRARY
40 .Lb libcalendar
41 .Sh SYNOPSIS
42 .In calendar.h
43 .Ft struct date *
44 .Fn easterg "int year" "struct date *dt"
45 .Ft struct date *
46 .Fn easterog "int year" "struct date *dt"
47 .Ft struct date *
48 .Fn easteroj "int year" "struct date *dt"
49 .Ft struct date *
50 .Fn gdate "int nd" "struct date *dt"
51 .Ft struct date *
52 .Fn jdate "int nd" "struct date *dt"
53 .Ft int
54 .Fn ndaysg "struct date *dt"
55 .Ft int
56 .Fn ndaysj "struct date *dt"
57 .Ft int
58 .Fn week "int nd" "int *year"
59 .Ft int
60 .Fn weekday "int nd"
61 .Sh DESCRIPTION
62 These functions provide calendar arithmetic for a large range of years,
63 starting at March 1st, year zero (i.e., 1 B.C.) and ending way beyond
64 year 100000.
65 .Pp
66 Programs should be linked with
67 .Fl lcalendar .
68 .Pp
69 The functions
70 .Fn easterg ,
71 .Fn easterog
72 and
73 .Fn easteroj
74 store the date of Easter Sunday into the structure pointed at by
75 .Fa dt
76 and return a pointer to this structure.
77 The function
78 .Fn easterg
79 assumes Gregorian Calendar (adopted by most western churches after 1582) and
80 the functions
81 .Fn easterog
82 and
83 .Fn easteroj
84 compute the date of Easter Sunday according to the orthodox rules
85 (Western churches before 1582, Greek and Russian Orthodox Church
86 until today).
87 The result returned by
88 .Fn easterog
89 is the date in Gregorian Calendar, whereas
90 .Fn easteroj
91 returns the date in Julian Calendar.
92 .Pp
93 The functions
94 .Fn gdate ,
95 .Fn jdate ,
96 .Fn ndaysg
97 and
98 .Fn ndaysj
99 provide conversions between the common "year, month, day" notation
100 of a date and the "number of days" representation, which is better suited
101 for calculations.
102 The days are numbered from March 1st year 1 B.C., starting
103 with zero, so the number of a day gives the number of days since March 1st,
104 year 1 B.C.
105 The conversions work for nonnegative day numbers only.
106 .Pp
107 The
108 .Fn gdate
109 and
110 .Fn jdate
111 functions
112 store the date corresponding to the day number
113 .Fa nd
114 into the structure pointed at by
115 .Fa dt
116 and return a pointer to this structure.
117 .Pp
118 The
119 .Fn ndaysg
120 and
121 .Fn ndaysj
122 functions
123 return the day number of the date pointed at by
124 .Fa dt .
125 .Pp
126 The
127 .Fn gdate
128 and
129 .Fn ndaysg
130 functions
131 assume Gregorian Calendar after October 4, 1582 and Julian Calendar before,
132 whereas
133 .Fn jdate
134 and
135 .Fn ndaysj
136 assume Julian Calendar throughout.
137 .Pp
138 The two calendars differ by the definition of the leap year.
139 The
140 Julian Calendar says every year that is a multiple of four is a
141 leap year.
142 The Gregorian Calendar excludes years that are multiples of
143 100 and not multiples of 400.
144 This means the years 1700, 1800, 1900, 2100 are not leap years
145 and the year 2000 is
146 a leap year.
147 The new rules were inaugurated on October 4, 1582 by deleting ten
148 days following this date.
149 Most catholic countries adopted the new
150 calendar by the end of the 16th century, whereas others stayed with
151 the Julian Calendar until the 20th century.
152 The United Kingdom and
153 their colonies switched on September 2, 1752.
154 They already had to
155 delete 11 days.
156 .Pp
157 The function
158 .Fn week
159 returns the number of the week which contains the day numbered
160 .Fa nd .
161 The argument
162 .Fa *year
163 is set with the year that contains (the greater part of) the week.
164 The weeks are numbered per year starting with week 1, which is the
165 first week in a year that includes more than three days of the year.
166 Weeks start on Monday.
167 This function is defined for Gregorian Calendar only.
168 .Pp
169 The function
170 .Fn weekday
171 returns the weekday (Mo = 0 ..\& Su = 6) of the day numbered
172 .Fa nd .
173 .Pp
174 The structure
175 .Fa date
176 is defined in
177 .In calendar.h .
178 It contains these fields:
179 .Bd -literal -offset indent
180 int y;          /\(** year (0000 - ????) \(**/
181 int m;          /\(** month (1 - 12) \(**/
182 int d;          /\(** day of month (1 - 31) \(**/
183 .Ed
184 .Pp
185 The year zero is written as "1 B.C." by historians and "0" by astronomers
186 and in this library.
187 .Sh SEE ALSO
188 .Xr ncal 1 ,
189 .Xr strftime 3
190 .Sh STANDARDS
191 The week number conforms to ISO 8601: 1988.
192 .Sh HISTORY
193 The
194 .Nm calendar
195 library first appeared in
196 .Fx 3.0 .
197 .Sh AUTHORS
198 This manual page and the library was written by
199 .An Wolfgang Helbig Aq Mt helbig@FreeBSD.org .
200 .Sh BUGS
201 The library was coded with great care so there are no bugs left.