Time_Zone

# Module Time_Zone

    module Time_Zone: sig .. end

Time zone management.

You can `change` the `current` time zone in your program by side effect.

`type ``t =`

`|` | `UTC` | `(*` | Greenwich Meridian Time | `*)`
`|` | `Local` | `(*` | Local Time | `*)`
`|` | `UTC_Plus of `int`` | `(*` | Another time zone specified from UTC | `*)`

Type of a time zone.

    val current : unit -> t

Return the current time zone. It is `UTC` before any change.

    val change : t -> unit

Change the current time zone by another one. Raise `Invalid_argument` if the specified time zone is `UTC_Plus x` with `x < -12` or `x > 11`

    val gap : t -> t -> int

Return the gap between two time zone.
Example: `gap UTC (UTC_Plus 5)` returns 5 and, at Paris in summer, `gap Local UTC` returns -2.

    val from_gmt : unit -> int

`from_gmt ()` is equivalent to `gap UTC (current ())`.

    val to_gmt : unit -> int

`to_gmt ()` is equivalent to `gap (current ()) UTC`.

    val is_dst : unit -> bool

`is_dst ()` checks if daylight saving time is in effect. Only relevant in local time. Returns alway `false` in another time zone.
Since 1.09.4

    val hour_of_dst : unit -> int

`hour_of_dst ()` returns `1` if `is_dst ()` and `0` otherwise.
Since 1.09.4

    val on : ('a -> 'b) -> t -> 'a -> 'b

`on f tz x` changes the time zone to `tz`, then computes `f x`, and finally reset the time zone to the initial one and returns the result of the computation.
Since 2.0