112 lines
2.4 KiB
Groff
112 lines
2.4 KiB
Groff
.TH caldate_mjd 3
|
|
.SH NAME
|
|
caldate_mjd \- manipulate calendar dates
|
|
.SH SYNTAX
|
|
.B #include <caldate.h>
|
|
|
|
void \fBcaldate_frommjd\fP(&\fIcd\fR,\fIday\fR,\fIweekday\fR,\fIyearday\fR);
|
|
.br
|
|
long \fBcaldate_mjd\fP(&\fIcd\fR);
|
|
.br
|
|
void \fBcaldate_normalize\fP(&\fIcd\fR);
|
|
|
|
void \fBcaldate_easter\fP(&\fIcd\fR);
|
|
|
|
struct caldate \fIcd\fR;
|
|
.br
|
|
long \fIday\fR;
|
|
.br
|
|
int *\fIweekday\fR;
|
|
.br
|
|
int *\fIyearday\fR;
|
|
.SH "BASIC CONVERSIONS"
|
|
Every calendar date has a
|
|
.I modified Julian day number\fR.
|
|
The day number increases by 1 every day.
|
|
Day number 0 is 17 November 1858.
|
|
Day number 51604 is 1 March 2000.
|
|
|
|
.B caldate_frommjd
|
|
puts into
|
|
.I cd
|
|
the date corresponding to the modified Julian day number
|
|
.IR day .
|
|
|
|
.B caldate_frommjd
|
|
also computes the day of the week (0 through 6)
|
|
and the day of the year (0 through 365).
|
|
It stores the day of the week in
|
|
.B *\fIweekday
|
|
if
|
|
.I weekday
|
|
is nonzero.
|
|
It stores the day of the year in
|
|
.B *\fIyearday
|
|
if
|
|
.I yearday
|
|
is nonzero.
|
|
|
|
.B caldate_mjd
|
|
returns the modified Julian day number corresponding to the date in
|
|
.IR cd .
|
|
|
|
.B caldate_mjd
|
|
accepts days outside the range 1 to 31,
|
|
referring to days before the beginning or after the end of the month.
|
|
It also accepts months outside the range 1 to 12,
|
|
referring to months before the beginning or after the end of the year.
|
|
|
|
.B caldate_normalize
|
|
calls
|
|
.B caldate_frommjd
|
|
with the result of
|
|
.BR caldate_mjd .
|
|
This means that it accepts out-of-range months and out-of-range days in
|
|
.IR cd ,
|
|
and puts a valid calendar date back into
|
|
.IR cd .
|
|
.SH "OTHER FUNCTIONS"
|
|
.B caldate_easter
|
|
reads the year from
|
|
.I cd
|
|
and then changes
|
|
.I cd
|
|
to the date of Easter in the same year.
|
|
.SH LIMITATIONS
|
|
The
|
|
.B caldate
|
|
routines currently support the Gregorian calendar,
|
|
which was defined in 1582 and adopted at different times
|
|
in different countries.
|
|
For earlier dates the
|
|
.B caldate
|
|
routines work with
|
|
``virtual Gregorian,''
|
|
defined mathematically by the 400-year Gregorian cycle
|
|
for years before 1582.
|
|
The Julian calendar is not supported.
|
|
|
|
The Gregorian calendar will be replaced by a new calendar
|
|
within a few thousand years.
|
|
The
|
|
.B caldate_frommjd
|
|
and
|
|
.B caldate_mjd
|
|
routines will be upgraded accordingly.
|
|
The current
|
|
.B caldate_frommjd
|
|
and
|
|
.B caldate_mjd
|
|
routines are not useful for dates far in the future.
|
|
|
|
Day numbers will overflow a 32-bit
|
|
.B long
|
|
sometime after the year 5000000;
|
|
all systems should upgrade to 64-bit
|
|
.BR long s
|
|
before then.
|
|
.B caldate_mjd
|
|
does not check for overflow.
|
|
.SH "SEE ALSO"
|
|
caldate(3)
|