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