module Cf_gregorian:sig
..end
Gregorian dates between 12 Aug -2937947 CE and 27 Feb 2935093 inclusive are convertible to Chronological Julian Day numbers on platforms where the Ocaml integer is a 31-bit integer.
Days of the month are represented by integers from 1 to 31. Months of the
year are represented by integers from 1 to 12. Days of the week are
represented by integers from 0 to 6, where 0 is Sunday and 6 is Saturday.
Days of the year are numbered from 0 to 365, where only leap years contain
a day numbered 365.
val is_valid : year:int -> month:int -> day:int -> bool
is_valid ~year ~month ~day
returns true
if year
, month
and day
arguments specify a valid Gregorian date.val of_cjd : ?wday:int Pervasives.ref ->
?yday:int Pervasives.ref -> int -> int * int * int
of_cjd ?wday ?yday cjd
returns a 3-tuple (year, month, day)
with the
year, month and day of the corresponding Gregorian date represented in
integer form.
If the ?wday
parameter is used, then the day of the week is computed and
stored. If the ?yday
parameter is used, then the day of the year is
computed and stored.
Raises Invalid_argument
if cjd
is in the very small range of values
in the ancient past where the conversion algorithm would otherwise
result in date in the extreme future.
val to_cjd : year:int -> month:int -> day:int -> int
to_cjd ~year ~month ~day
returns the Chronological Julian Day number of
the specified Gregorian date. Raise Invalid_argument
if year
, month
or day
indicates an invalid Gregorian date, or the calculation would
overflow the integer representation of CJD numbers.val to_cjd_unsafe : year:int -> month:int -> day:int -> int
to_cjd_unsafe ~year ~month ~day
is the same as to_cjd ~year ~month
~day
, except the parameters are not checked for boundaries and that the
date is a valid Gregorian date. Use this version if the date is already
known to be valid, and in the range of representable CJD numbers.