sig   module Date :     sig       type field = Period.date_field       type -'a date = 'Date.date constraint 'a = [< field ]       type t = field date       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 = int       exception Out_of_bounds       exception Undefined       val make : year -> int -> int -> t       val lmake : year:year -> ?month:int -> ?day:int -> unit -> t       val make_year : int -> [< `Year ] date       val make_year_month : int -> int -> [< `Month | `Year ] date       val today : unit -> t       val from_jd : int -> t       val from_mjd : int -> t       val from_day_of_year : year -> int -> t       val days_in_month : [< field > `Month `Year ] date -> 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 : [< field > `Month ] date -> month       val year : [< field > `Year ] date -> year       val to_jd : t -> int       val to_mjd : t -> int       val equal : [< field ] date -> [< field ] date -> bool       val compare : [< field ] date -> [< field ] date -> int       val hash : [< field ] date -> int       val is_valid_date : year -> int -> int -> bool       val is_leap_day : t -> bool       val is_gregorian : t -> bool       val is_julian : t -> bool       val to_unixtm : t -> Unix.tm       val from_unixtm : Unix.tm -> t       val to_unixfloat : t -> float       val from_unixfloat : float -> t       val to_business : t -> year * int * day       val from_business : year -> int -> day -> t       val int_of_day : day -> int       val day_of_int : int -> day       val int_of_month : month -> int       val month_of_int : int -> month       module Period :         sig           type +'a p = 'Date.Period.p constraint 'a = [< field ]           type +'a period = 'a p constraint 'a = [< field ]           type t = Period.date_field period           val empty : [< Period.date_field ] period           val add :             ([< Period.date_field ] as 'a) period -> 'a period -> 'a period           val sub :             ([< Period.date_field ] as 'a) period -> 'a period -> 'a period           val opp : ([< Period.date_field ] as 'a) period -> 'a period           val equal :             [< Period.date_field ] period ->             [< Period.date_field ] period -> bool           val compare :             [< Period.date_field ] period ->             [< Period.date_field ] period -> int           val hash : [< Period.date_field ] period -> int           val make : int -> int -> int -> t           val lmake : ?year:int -> ?month:int -> ?day:int -> unit -> t           val year : int -> [< field > `Year ] period           val month : int -> [< field > `Month `Year ] period           val week : int -> [< field > `Day `Week ] period           val day : int -> [< field > `Day `Week ] period           exception Not_computable           val nb_days : [< field ] period -> int           val safe_nb_days : [< `Day | `Week ] period -> int           val ymd : [< field ] period -> int * int * int         end       val add : ([< field ] as 'a) date -> 'Period.period -> 'a date       val sub :         ([< field ] as 'a) date ->         'a date -> [< field > `Day `Week ] Period.period       val precise_sub : ([< field ] as 'a) date -> 'a date -> Period.t       val rem : ([< field ] as 'a) date -> 'Period.period -> 'a date       val next : ([< field ] as 'a) date -> '-> 'a date       val prev : ([< field ] as 'a) date -> '-> 'a date       val is_leap_year : year -> bool       val same_calendar : year -> year -> bool       val days_in_year : ?month:month -> year -> int       val weeks_in_year : year -> int       val week_first_last : int -> year -> t * t       val nth_weekday_of_month : year -> month -> day -> int -> t       val century : year -> int       val millenium : year -> int       val solar_number : year -> int       val indiction : year -> int       val golden_number : year -> int       val epact : year -> int       val easter : year -> t       val carnaval : year -> t       val mardi_gras : year -> t       val ash : year -> t       val palm : year -> t       val easter_friday : year -> t       val easter_saturday : year -> t       val easter_monday : year -> t       val ascension : year -> t       val withsunday : year -> t       val withmonday : year -> t       val corpus_christi : year -> t     end   module Time :     sig       type t = Time.t       type field = [ `Hour | `Minute | `Second ]       type second = int       module Second :         sig           type t = second           val from_int : int -> t           val from_float : float -> t           val to_int : t -> int           val to_float : t -> float         end       val make : int -> int -> second -> t       val lmake : ?hour:int -> ?minute:int -> ?second:second -> unit -> t       val now : unit -> t       val midnight : unit -> t       val midday : unit -> t       val convert : t -> Time_Zone.t -> Time_Zone.t -> t       val from_gmt : t -> t       val to_gmt : t -> t       val normalize : t -> t * int       val hour : t -> int       val minute : t -> int       val second : t -> second       val to_seconds : t -> second       val to_minutes : t -> float       val to_hours : t -> float       val equal : t -> t -> bool       val compare : t -> t -> int       val hash : t -> int       val is_pm : t -> bool       val is_am : t -> bool       val from_seconds : second -> t       val from_minutes : float -> t       val from_hours : float -> t       module Period :         sig           type +'a period = 'Time.Period.period             constraint 'a = [< Period.date_field ]           type t = Period.date_field period           val empty : [< Period.date_field ] period           val add :             ([< Period.date_field ] as 'a) period -> 'a period -> 'a period           val sub :             ([< Period.date_field ] as 'a) period -> 'a period -> 'a period           val opp : ([< Period.date_field ] as 'a) period -> 'a period           val equal :             [< Period.date_field ] period ->             [< Period.date_field ] period -> bool           val compare :             [< Period.date_field ] period ->             [< Period.date_field ] period -> int           val hash : [< Period.date_field ] period -> int           val length : [< Period.date_field ] period -> second           val mul :             ([< Period.date_field ] as 'a) period -> 'a period -> 'a period           val div :             ([< Period.date_field ] as 'a) period -> 'a period -> 'a period           val make : int -> int -> second -> [< Period.date_field ] period           val lmake :             ?hour:int ->             ?minute:int ->             ?second:second -> unit -> [< Period.date_field ] period           val hour : int -> [< Period.date_field ] period           val minute : int -> [< Period.date_field ] period           val second : second -> [< Period.date_field ] period           val to_seconds : [< Period.date_field ] period -> second           val to_minutes : [< Period.date_field ] period -> float           val to_hours : [< Period.date_field ] period -> float         end       val add : t -> [< Period.date_field ] Period.period -> t       val sub : t -> t -> [< Period.date_field ] Period.period       val rem : t -> [< Period.date_field ] Period.period -> t       val next : t -> field -> t       val prev : t -> field -> t     end   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 -> second -> t   val lmake :     year:int ->     ?month:int ->     ?day:int -> ?hour:int -> ?minute:int -> ?second:second -> unit -> t   val create : Date.t -> Time.t -> t   val now : unit -> t   val from_jd : float -> t   val from_mjd : float -> t   val convert : t -> Time_Zone.t -> Time_Zone.t -> t   val to_gmt : t -> t   val from_gmt : t -> t   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   val to_jd : t -> float   val to_mjd : t -> float   val hour : t -> int   val minute : t -> int   val second : t -> second   val equal : t -> t -> bool   val compare : t -> t -> int   val hash : t -> int   val is_leap_day : t -> bool   val is_gregorian : t -> bool   val is_julian : t -> bool   val is_pm : t -> bool   val is_am : t -> bool   val to_unixtm : t -> Unix.tm   val from_unixtm : Unix.tm -> t   val to_unixfloat : t -> float   val from_unixfloat : float -> t   val from_date : Date.t -> t   val to_date : t -> Date.t   val to_time : t -> Time.t   module Period :     sig       type +'a period constraint 'a = [< Period.date_field ]       type t = Period.date_field period       val empty : [< Period.date_field ] period       val add :         ([< Period.date_field > `Day `Week ] as 'a) period ->         'a period -> 'a period       val sub :         ([< Period.date_field > `Day `Week ] as 'a) period ->         'a period -> 'a period       val opp :         ([< Period.date_field > `Day `Week ] as 'a) period -> 'a period       val equal :         [< Period.date_field ] period ->         [< Period.date_field ] period -> bool       val compare :         [< Period.date_field ] period -> [< Period.date_field ] period -> int       val hash : [< Period.date_field ] period -> int       val make : int -> int -> int -> int -> int -> second -> t       val lmake :         ?year:int ->         ?month:int ->         ?day:int -> ?hour:int -> ?minute:int -> ?second:second -> unit -> t       val year : int -> [< Period.date_field > `Year ] period       val month : int -> [< Period.date_field > `Month `Year ] period       val week : int -> [< Period.date_field > `Day `Week ] period       val day : int -> [< Period.date_field > `Day `Week ] period       val hour : int -> [< Period.date_field > `Day `Week ] period       val minute : int -> [< Period.date_field > `Day `Week ] period       val second : second -> [< Period.date_field > `Day `Week ] period       val from_date :         ([< Period.date_field ] as 'a) Date.Period.period -> 'a period       val from_time :         ([< Period.date_field ] as 'a) Time.Period.period -> 'a period       val to_date : ([< Date.field ] as 'a) period -> 'Date.Period.period       exception Not_computable       val to_time :         ([< Period.date_field ] as 'a) period -> 'Time.Period.period       val safe_to_time :         ([< `Day | `Week ] as 'a) period -> 'Time.Period.period       val ymds : [< Period.date_field ] period -> int * int * int * second     end   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 end