Page
Library
Module
Module type
Parameter
Class
Class type
Source
OCaml date time handling and reasoning suite
This repo houses:
Note: The project core is largely complete, but still undergoing testing - you're welcome to use it in prototypes, but avoid using it in production for now. The NLP component is WIP.
Disclaimer: Timere is not designed to handle prehistoric events. For prehistoric planning and booking software, please consult appropriate experts.
Christmases which fall on Wednesday from now
let () =
let open Timere in
match
resolve (
since (Timedesc.now ())
& months [12]
& days [25]
& weekdays [`Wed]
)
with
| Error msg -> failwith msg
| Ok s ->
Fmt.pr "%a@." (Timedesc.Interval.pp_seq ~sep:(Fmt.any "@.") ()) s
gives
[2024 Dec 25 00:00:00 +00:00:00, 2024 Dec 26 00:00:00 +00:00:00)
[2030 Dec 25 00:00:00 +00:00:00, 2030 Dec 26 00:00:00 +00:00:00)
[2041 Dec 25 00:00:00 +00:00:00, 2041 Dec 26 00:00:00 +00:00:00)
[2047 Dec 25 00:00:00 +00:00:00, 2047 Dec 26 00:00:00 +00:00:00)
[2052 Dec 25 00:00:00 +00:00:00, 2052 Dec 26 00:00:00 +00:00:00)
[2058 Dec 25 00:00:00 +00:00:00, 2058 Dec 26 00:00:00 +00:00:00)
...
See examples/
for more examples
Timestamp and date time handling with platform independent time zone support
Reasoning over time intervals via timere
objects/expressions, examples:
Include timedesc
(timere
and timere-parse
if needed) in the libraries
stanza in your dune file
You can optionally pick one of the following two concrete implementations of time zone data source
timedesc.tzdb.full
timedesc.tzdb.none
The following resources should allow you to implement said approach readily
tzdb-json/
.gen-artifacts/available-time-zones.txt
Time_zone.JSON.of_string
can load files in tzdb-json/
You can optionally pick one of the following three concrete implementations of local time zone detection
timedesc.tzlocal.unix
timedesc.tzlocal.none
timedesc.tzlocal.utc
Note: While tzdb-json/
may be useful and usable outside of Timere, we make no guarantees that the JSON format stays unmodified (though changes of the format should be a rare occurrence, if ever occurring)
To use Timedesc in utop, you need to pick the backends explicitly first
For example, to use the default implementations, one can first type the following lines in utop
#require "timedesc.tzdb.full";;
#require "timedesc.tzlocal.unix";;
#require "timedesc";;
then Timedesc
should be accessible in utop
Timedesc itself can help build a time zone data source backend.
TODO
See here
Code files are licensed under the MIT license as specified in the LICENSE
file
Time zone database derived files are licensed under its original terms (public domain)
zdump
command output into gen-artifacts/time_zone_db.sexp
, using the IANA database (as time zone files) distributed on LinuxTime zone data handling code copies approach used by chrono-tz
timedesc.tzlocal.unix
backend is copied from tzlocal