let since_epoch date =
if date.month < 1 || date.month > 12 then invalid_arg "Parse.since_epoch";
let in_day =
float_of_int
(date.hour * 3600 + (date.minute - date.zone) * 60 + date.second)
in
let days =
date.year * 365 + (date.year + 3) / 4 - (date.year + 99) / 100 +
(date.year + 399) / 400 - 719528
in
let days = days + months_start.(date.month - 1) + date.day - 1 in
let days = if is_leap date.year && date.month > 2 then days + 1 else days in
86400.0 *. float_of_int days +. in_day