Timezone handles parsing timezone data and create [Timezone.t] that can later be used to manipulate time in core_kernel and core (using [Time] and [Time_ns] modules).
Timezone is currently only able to read the Timezone Database provided by IANA. It should work out of the box on Linux and macOS.
The location of the timezone files can be set using the environment
variable TZDIR
. If not set, [Timezone] will fallback to
/usr/share/zoneinfo/
.
The local timezone can be set using the environment variable TZ
. If
not set, [Timezone] will fallback to /etc/localtime
.
In a JavaScript context, we automatically set the environment variable
TZ
to Intl.DateTimeFormat().resolvedOptions().timeZone
.
The [Timezone] library can be used when constructing JavaScript applications with Js_of_ocaml.
[Timezone] should work out of the box when running on a Node.js environment on Linux or macOS. The file-system is accessible in that case.
In a web browser environment, the [Timezone] library requires some
additional setup. One should generate a JavaScript file that will
embed all timezone data required by the application. This can be done
by using a tool provided by js_of_ocaml
called jsoo_fs
. The
generated JavaScript file will have to be included in the HTML page
before the JavaScript program itself.
For example, one can embed all timezones in all-tz.js
with the following command:
grep -r TZif /usr/share/zoneinfo -l | xargs -n 1 -I {} echo {}:{} | xargs jsoo_fs -o all-tz.js
open Core_kernel
let now = Time_ns.now ()
let () =
Time_ns.to_sec_string now ~zone:(Lazy.force (Timezone.local))
|> print_endline
let () =
Time_ns.to_sec_string now ~zone:(Timezone.find_exn "America/New_York")
|> print_endline
Please report bugs and feature requests on GitHub.
You can find all of Jane Street's open-source libraries on GitHub.
Documentation can be found here.