sig   type t   type field = [ `Hour | `Minute | `Second ]   type second   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 -> Time_sig.S.second -> Time_sig.S.t   val lmake :     ?hour:int ->     ?minute:int -> ?second:Time_sig.S.second -> unit -> Time_sig.S.t   val now : unit -> Time_sig.S.t   val midnight : unit -> Time_sig.S.t   val midday : unit -> Time_sig.S.t   val convert : Time_sig.S.t -> Time_Zone.t -> Time_Zone.t -> Time_sig.S.t   val from_gmt : Time_sig.S.t -> Time_sig.S.t   val to_gmt : Time_sig.S.t -> Time_sig.S.t   val normalize : Time_sig.S.t -> Time_sig.S.t * int   val hour : Time_sig.S.t -> int   val minute : Time_sig.S.t -> int   val second : Time_sig.S.t -> Time_sig.S.second   val to_seconds : Time_sig.S.t -> Time_sig.S.second   val to_minutes : Time_sig.S.t -> float   val to_hours : Time_sig.S.t -> float   val equal : Time_sig.S.t -> Time_sig.S.t -> bool   val compare : Time_sig.S.t -> Time_sig.S.t -> int   val hash : Time_sig.S.t -> int   val is_pm : Time_sig.S.t -> bool   val is_am : Time_sig.S.t -> bool   val from_seconds : Time_sig.S.second -> Time_sig.S.t   val from_minutes : float -> Time_sig.S.t   val from_hours : float -> Time_sig.S.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 -> Time_sig.S.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 -> Time_sig.S.second -> [< Period.date_field ] period       val lmake :         ?hour:int ->         ?minute:int ->         ?second:Time_sig.S.second -> unit -> [< Period.date_field ] period       val hour : int -> [< Period.date_field ] period       val minute : int -> [< Period.date_field ] period       val second : Time_sig.S.second -> [< Period.date_field ] period       val to_seconds : [< Period.date_field ] period -> Time_sig.S.second       val to_minutes : [< Period.date_field ] period -> float       val to_hours : [< Period.date_field ] period -> float     end   val add :     Time_sig.S.t ->     [< Period.date_field ] Time_sig.S.Period.period -> Time_sig.S.t   val sub :     Time_sig.S.t ->     Time_sig.S.t -> [< Period.date_field ] Time_sig.S.Period.period   val rem :     Time_sig.S.t ->     [< Period.date_field ] Time_sig.S.Period.period -> Time_sig.S.t   val next : Time_sig.S.t -> Time_sig.S.field -> Time_sig.S.t   val prev : Time_sig.S.t -> Time_sig.S.field -> Time_sig.S.t end