sig   type t   type field = [ `Hour | `Minute | `Second ]   type second = float   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 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