Source file ISO8601_printers.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
let pp_ymd_date = RFC3339.pp_date
let pp_ym formatter (x : Ym.t) =
let year, month = Ym.year_month x in
Format.fprintf formatter "%04d-%02d" year month
let pp_iso_week formatter (x : ISO_week.t) =
let year, week = ISO_week.year_week x in
Format.fprintf formatter "%04d-W%02d" year week
let pp_iso_week_date formatter (x : Date.t) =
let Date.ISO_week_date'.{ year; week; weekday } =
Date.ISO_week_date'.view x
in
Format.fprintf formatter "%04d-W%02d-%d" year week
(Date_time_utils.iso_int_of_weekday weekday)
let pp_iso_ord formatter (x : Date.t) =
let Date.ISO_ord'.{ year; day_of_year } = Date.ISO_ord'.view x in
Format.fprintf formatter "%04d-%03d" year day_of_year
let pp_iso_week_date_time ?frac_s () formatter (x : Date_time.t) =
RFC3339.pp_date_time' ?frac_s pp_iso_week_date () formatter x
let pp_iso_ord_date_time ?frac_s () formatter (x : Date_time.t) =
RFC3339.pp_date_time' ?frac_s pp_iso_ord () formatter x
let str_of_iso_week_date_time ?frac_s dt : string =
Format.asprintf "%a" (pp_iso_week_date_time ?frac_s ()) dt
let str_of_iso_ord_date_time ?frac_s dt : string =
Format.asprintf "%a" (pp_iso_ord_date_time ?frac_s ()) dt