module Make: 
Implement a calendar from a date implementation and a time implementation.
    This module uses float. Then results may be very unprecise.
Since 2.0
Datatypes
module Date: Date_sig.S 
Date implementation used by this calendar.
module Time: Time_sig.S 
Time implementation used by this calendar.
type 
type Date.day = 
| | | Sun | 
| | | Mon | 
| | | Tue | 
| | | Wed | 
| | | Thu | 
| | | Fri | 
| | | Sat | 
type Date.month = 
| | | Jan | 
| | | Feb | 
| | | Mar | 
| | | Apr | 
| | | May | 
| | | Jun | 
| | | Jul | 
| | | Aug | 
| | | Sep | 
| | | Oct | 
| | | Nov | 
| | | Dec | 
type Date.year 
Year as an int
type Time.second 
type [ `Day | `Hour | `Minute | `Month | `Second | `Week | `Year ] 
The different fields of a calendar.
Constructors
val make : int -> int -> int -> int -> int -> second -> t
make year month day hour minute second makes the calendar
	"year-month-day; hour-minute-second".
Raises- D.Out_of_boundswhen a date is outside the Julian period.
- D.Undefinedwhen a date belongs to- [October 5th, 1582; October
	14th, 1582].
 
val lmake : year:int ->
       ?month:int ->
       ?day:int ->
       ?hour:int ->
       ?minute:int -> ?second:second -> unit -> t
Labelled version of 
make.
	The default value of 
month and 
day (resp. of 
hour, 
minute
	and 
second) is 
1 (resp. 
0).
Since 1.05
Raises- D.Out_of_boundswhen a date is outside the Julian period.
- D.Undefinedwhen a date belongs to- [October 5th, 1582; October
	14th, 1582].
val create : Date.t -> Time.t -> t
create d t creates a calendar from the given date and time.
val now : unit -> t
now () returns the current date and time (in the current time
	zone).
val from_jd : float -> t
Return the Julian day.
	More precise than Date.from_jd: the fractional part represents the
	time.
val from_mjd : float -> t
Return the Modified Julian day.
	It is Julian day - 2 400 000.5 (more precise than Date.from_mjd).
Conversions
Those functions have the same behaviour as those defined in
       Time_sig.S.
val convert : t -> Time_Zone.t -> Time_Zone.t -> t
val to_gmt : t -> t
val from_gmt : t -> t
Getters
Those functions have the same behavious as those defined in
      Date_sig.S.
val days_in_month : t -> int
val day_of_week : t -> day
val day_of_month : t -> int
val day_of_year : t -> int
val week : t -> int
val month : t -> month
val year : t -> int
to_jd and to_mjd are more precise than Date_sig.S.to_jd and
      Date_sig.S.to_mjd.
val to_jd : t -> float
val to_mjd : t -> float
Those functions have the same behavious as those defined in
      Time_sig.S.
val hour : t -> int
val minute : t -> int
val second : t -> second
Calendars are comparable
val equal : t -> t -> bool
val compare : t -> t -> int
val hash : t -> int
Those functions have the same behavious as those defined in
      Date_sig.S.
val is_leap_day : t -> bool
val is_gregorian : t -> bool
val is_julian : t -> bool
Those functions have the same behavious as those defined in
      Time_sig.S.
val is_pm : t -> bool
val is_am : t -> bool
Coercions
val to_unixtm : t -> Unix.tm
Convert a calendar into the 
unix.tm type.
	The field 
isdst is always 
false. More precise than
	
Date_sig.S.to_unixtm.
Since 1.01
val from_unixtm : Unix.tm -> t
Inverse of to_unixtm. Assumes the current time zone.
	So, The following invariant holds:
	hour (from_unixtm u) = u.Unix.tm_hour.
Since 1.01
val to_unixfloat : t -> float
Convert a calendar to a float such than
	
to_unixfloat (make 1970 1 1 0 0 0) returns 
0.0 at UTC.
	So such a float is convertible with those of the module 
Unix.
	More precise than 
Date_sig.S.to_unixfloat.
Since 1.01
val from_unixfloat : float -> t
Inverse of to_unixfloat. Assumes the current time zone.
	So, the following invariant holds:
	hour (from_unixfloat u) = (Unix.gmtime u).Unix.tm_hour.
Since 1.01
val from_date : Date.t -> t
Convert a date to a calendar.
	The time is midnight in the current time zone.
val to_date : t -> Date.t
Convert a calendar to a date. Time part of the calendar is ignored.
val to_time : t -> Time.t
Convert a calendar to a time. Date part of the calendar is ignored.
Since 1.03
Period
module Period: sig .. end
A period is the number of seconds between two calendars.
Arithmetic operations on calendars and periods
Those functions have the same behavious as those defined in
      Date_sig.S.
val add : t ->
       [< Period.date_field ] Period.period -> t
val sub : t ->
       t ->
       [< Period.date_field > `Day `Week ] Period.period
val precise_sub : t -> t -> Period.t
val rem : t ->
       [< Period.date_field ] Period.period -> t
val next : t -> field -> t
val prev : t -> field -> t