let string_of_date =
let raw_string_of_date ~f_mon ~f_wday ~wday ~hours ~secs d =
let tm = Unix.localtime d in
let mon = f_mon tm.Unix.tm_mon in
let day = f_wday tm.Unix.tm_wday in
Printf.sprintf
"%s%02d-%s-%4d%s"
(if wday then day^", " else "")
tm.Unix.tm_mday mon (tm.Unix.tm_year + 1900)
(
if hours then
Printf.sprintf " %02d:%02d%s"
tm.Unix.tm_hour tm.Unix.tm_min
(if secs then Printf.sprintf ":%02d" tm.Unix.tm_sec else "")
else
""
)
in
let mon_of_int_fr = function
0 -> "Jan"
| 1 -> "Fev"
| 2 -> "Mar"
| 3 -> "Avr"
| 4 -> "Mai"
| 5 -> "Jui"
| 6 -> "Jul"
| 7 -> "Aou"
| 8 -> "Sep"
| 9 -> "Oct"
| 10 -> "Nov"
| _ -> "Dec"
in
let wday_of_int_fr = function
0 -> "Dimanche"
| 1 -> "Lundi"
| 2 -> "Mardi"
| 3 -> "Mercredi"
| 4 -> "Jeudi"
| 5 -> "Vendredi"
| _ -> "Samedi"
in
let mon_of_int_en = function
0 -> "Jan"
| 1 -> "Feb"
| 2 -> "Mar"
| 3 -> "Apr"
| 4 -> "May"
| 5 -> "Jun"
| 6 -> "Jul"
| 7 -> "Aug"
| 8 -> "Sep"
| 9 -> "Oct"
| 10 -> "Nov"
| _ -> "Dec"
in
let wday_of_int_en = function
0 -> "Sunday"
| 1 -> "Monday"
| 2 -> "Tuesday"
| 3 -> "Wednesday"
| 4 -> "Thursday"
| 5 -> "Friday"
| _ -> "Saturday"
in
fun ?(fr=false)
?(wday=false) ?(hours=true) ?(secs=false) d ->
let (f_mon, f_wday) =
if fr then
(mon_of_int_fr, wday_of_int_fr)
else
(mon_of_int_en, wday_of_int_en)
in
raw_string_of_date ~f_mon ~f_wday
~wday ~hours ~secs d