sig   module Date : Date_sig.S   module Time : Time_sig.S   type t   type day = Date.day = Sun | Mon | Tue | Wed | Thu | Fri | Sat   type month =     Date.month =       Jan     | Feb     | Mar     | Apr     | May     | Jun     | Jul     | Aug     | Sep     | Oct     | Nov     | Dec   type year = Date.year   type second = Time.second   type field = [ `Day | `Hour | `Minute | `Month | `Second | `Week | `Year ]   val make :     int ->     int -> int -> int -> int -> Calendar_sig.S.second -> Calendar_sig.S.t   val lmake :     year:int ->     ?month:int ->     ?day:int ->     ?hour:int ->     ?minute:int -> ?second:Calendar_sig.S.second -> unit -> Calendar_sig.S.t   val create : Date.t -> Time.t -> Calendar_sig.S.t   val now : unit -> Calendar_sig.S.t   val from_jd : float -> Calendar_sig.S.t   val from_mjd : float -> Calendar_sig.S.t   val convert :     Calendar_sig.S.t -> Time_Zone.t -> Time_Zone.t -> Calendar_sig.S.t   val to_gmt : Calendar_sig.S.t -> Calendar_sig.S.t   val from_gmt : Calendar_sig.S.t -> Calendar_sig.S.t   val days_in_month : Calendar_sig.S.t -> int   val day_of_week : Calendar_sig.S.t -> Calendar_sig.S.day   val day_of_month : Calendar_sig.S.t -> int   val day_of_year : Calendar_sig.S.t -> int   val week : Calendar_sig.S.t -> int   val month : Calendar_sig.S.t -> Calendar_sig.S.month   val year : Calendar_sig.S.t -> int   val to_jd : Calendar_sig.S.t -> float   val to_mjd : Calendar_sig.S.t -> float   val hour : Calendar_sig.S.t -> int   val minute : Calendar_sig.S.t -> int   val second : Calendar_sig.S.t -> Calendar_sig.S.second   val equal : Calendar_sig.S.t -> Calendar_sig.S.t -> bool   val compare : Calendar_sig.S.t -> Calendar_sig.S.t -> int   val hash : Calendar_sig.S.t -> int   val is_leap_day : Calendar_sig.S.t -> bool   val is_gregorian : Calendar_sig.S.t -> bool   val is_julian : Calendar_sig.S.t -> bool   val is_pm : Calendar_sig.S.t -> bool   val is_am : Calendar_sig.S.t -> bool   val to_unixtm : Calendar_sig.S.t -> Unix.tm   val from_unixtm : Unix.tm -> Calendar_sig.S.t   val to_unixfloat : Calendar_sig.S.t -> float   val from_unixfloat : float -> Calendar_sig.S.t   val from_date : Date.t -> Calendar_sig.S.t   val to_date : Calendar_sig.S.t -> Date.t   val to_time : Calendar_sig.S.t -> Time.t   module Period :     sig       type +'a period constraint 'a = [< Period.date_field ]       type t = Period.date_field Calendar_sig.S.Period.period       val empty : [< Period.date_field ] Calendar_sig.S.Period.period       val add :         ([< Period.date_field > `Day `Week ] as 'a)         Calendar_sig.S.Period.period ->         'Calendar_sig.S.Period.period -> 'Calendar_sig.S.Period.period       val sub :         ([< Period.date_field > `Day `Week ] as 'a)         Calendar_sig.S.Period.period ->         'Calendar_sig.S.Period.period -> 'Calendar_sig.S.Period.period       val opp :         ([< Period.date_field > `Day `Week ] as 'a)         Calendar_sig.S.Period.period -> 'Calendar_sig.S.Period.period       val equal :         [< Period.date_field ] Calendar_sig.S.Period.period ->         [< Period.date_field ] Calendar_sig.S.Period.period -> bool       val compare :         [< Period.date_field ] Calendar_sig.S.Period.period ->         [< Period.date_field ] Calendar_sig.S.Period.period -> int       val hash : [< Period.date_field ] Calendar_sig.S.Period.period -> int       val make :         int ->         int ->         int -> int -> int -> Calendar_sig.S.second -> Calendar_sig.S.Period.t       val lmake :         ?year:int ->         ?month:int ->         ?day:int ->         ?hour:int ->         ?minute:int ->         ?second:Calendar_sig.S.second -> unit -> Calendar_sig.S.Period.t       val year :         int -> [< Period.date_field > `Year ] Calendar_sig.S.Period.period       val month :         int ->         [< Period.date_field > `Month `Year ] Calendar_sig.S.Period.period       val week :         int ->         [< Period.date_field > `Day `Week ] Calendar_sig.S.Period.period       val day :         int ->         [< Period.date_field > `Day `Week ] Calendar_sig.S.Period.period       val hour :         int ->         [< Period.date_field > `Day `Week ] Calendar_sig.S.Period.period       val minute :         int ->         [< Period.date_field > `Day `Week ] Calendar_sig.S.Period.period       val second :         Calendar_sig.S.second ->         [< Period.date_field > `Day `Week ] Calendar_sig.S.Period.period       val from_date :         ([< Period.date_field ] as 'a) Date.Period.period ->         'Calendar_sig.S.Period.period       val from_time :         ([< Period.date_field ] as 'a) Time.Period.period ->         'Calendar_sig.S.Period.period       val to_date :         ([< Date.field ] as 'a) Calendar_sig.S.Period.period ->         'Date.Period.period       exception Not_computable       val to_time :         ([< Period.date_field ] as 'a) Calendar_sig.S.Period.period ->         'Time.Period.period       val safe_to_time :         ([< `Day | `Week ] as 'a) Calendar_sig.S.Period.period ->         'Time.Period.period       val ymds :         [< Period.date_field ] Calendar_sig.S.Period.period ->         int * int * int * Calendar_sig.S.second     end   val add :     Calendar_sig.S.t ->     [< Period.date_field ] Calendar_sig.S.Period.period -> Calendar_sig.S.t   val sub :     Calendar_sig.S.t ->     Calendar_sig.S.t ->     [< Period.date_field > `Day `Week ] Calendar_sig.S.Period.period   val precise_sub :     Calendar_sig.S.t -> Calendar_sig.S.t -> Calendar_sig.S.Period.t   val rem :     Calendar_sig.S.t ->     [< Period.date_field ] Calendar_sig.S.Period.period -> Calendar_sig.S.t   val next : Calendar_sig.S.t -> Calendar_sig.S.field -> Calendar_sig.S.t   val prev : Calendar_sig.S.t -> Calendar_sig.S.field -> Calendar_sig.S.t end