module Time:Time operations.sig
..end
If minutes and seconds do not belong to [0; 59]
, they are coerced into this
interval. For example, the time "30 hours, 60 minutes, 80 seconds" is coerced
to the time "31 hours, 1 minute, 20 seconds".
Each time is interpreted in the current time zone (given by
Time_Zone.current ()
). So, if you change the time zone (by
Time_Zone.change
), each time consequently changes.
If you want to express a time in another time zone (and do not affect
others times), use the convert
function.
type
t
typefield =
[ `Hour | `Minute | `Second ]
val make : int -> int -> int -> t
make hour minute second
makes the time hour-minute-second.val lmake : ?hour:int -> ?minute:int -> ?second:int -> unit -> t
make
. The default value is 0
for each argument.val now : unit -> t
Time_Zone.current ()
.val midnight : unit -> t
midnight ()
is midnight (expressed in the current time zone).
So, it has always the same behaviour as make 0 0 0
.val midday : unit -> t
midday ()
is midday (expressed in the current time zone).
So, it has always the same behaviour as make 12 0 0
.val convert : t -> Time_Zone.t -> Time_Zone.t -> t
convert t t1 t2
converts the time t
expressed in the time zone t1
to the same time expressed in the time zone t2
.\\
E.g.
convert (make 20 0 0) (Time_Zone.GMT_Plus 2) (Time_Zone.GMT_Plus 4)
returns the time 22-0-0.val from_gmt : t -> t
from_gmt t
is equivalent to
convert t Time_Zone.GMT (Time_Zone.current ())
.val to_gmt : t -> t
to_gmt t
is equivalent to
convert t (Time_Zone.current ()) Time_Zone.GMT
.val normalize : t -> t * int
normalize t
returns t
such that hour t
$\in 0; 23
$.
The second component of the result is the number of days needed by the
modification.
E.g. normalize (make 22 0 0)
returns the time 22-0-0 and 0,
normalize (make 73 0 0)
returns the time 1-0-0 and 3 and
normalize (make (-73) 0 0)
returns the time 23-0-0 and (-4).val hour : t -> int
hour (make 20 0 0)
returns 20.val minute : t -> int
minute (make 20 10 0)
returns 10.val second : t -> int
second (make 20 10 5)
returns 5.val to_seconds : t -> int
to_seconds (make 1 2 3)
returns 3600 + 120 + 3 = 3723
.val to_minutes : t -> float
to_minutes (make 1 2 3)
returns 60 + 2 + 0.05 = 62.05
.val to_hours : t -> float
to_hours (make 1 3 0)
returns 1 + 0.05 = 1.05
.val compare : t -> t -> int
Pervasives.compare
.val is_pm : t -> bool
true
is the time is before midday; false
otherwise.
E.g. both is_pm (make 10 0 0)
and is_pm (make 34 0 0)
return true
.val is_am : t -> bool
true
is the time is after midday; false
otherwise.
E.g. both is_am (make 20 0 0)
and is_am (make 44 0 0)
return true
.val from_seconds : int -> t
to_seconds
.val from_minutes : float -> t
to_minutes
.val from_hours : float -> t
to_hours
.module Period:sig
..end
val add : t -> Period.t -> t
app t p
returns t + p
.
E.g. add (make 20 0 0) (Period.minute 70)
returns the time 21-10-0.val sub : t -> t -> Period.t
sub t1 t2
returns the period between t1
and t2
.val rem : t -> Period.t -> t
rem t p
is equivalent to add t (Period.opp p)
.val next : t -> field -> t
next t f
returns the time corresponding to the next specified field.
E.g next (make 20 3 31) `Minute
returns the time 20-4-31.
(i.e. one minute later).val prev : t -> field -> t
prev t f
returns the time corresponding to the previous specified field.
E.g prev (make 20 3 31) `Second
returns the time 20-3-30.
(i.e. one second ago).