sig
  type t = java'util'Date java_instance
  val now : unit -> JavaDate.t
  val make : java_long -> JavaDate.t
  val get_time : JavaDate.t -> java_long
  val after : JavaDate.t -> JavaDate.t -> bool
  val before : JavaDate.t -> JavaDate.t -> bool
  val compare_to : JavaDate.t -> JavaDate.t -> int
  type format = java'text'DateFormat java_instance
  type format_style = Full | Long | Medium | Short
  val make_date_format :
    ?date_style:JavaDate.format_style ->
    ?locale:JavaLocale.t ->
    ?time_zone:JavaTimeZone.t -> unit -> JavaDate.format
  val make_date_time_format :
    ?date_style:JavaDate.format_style ->
    ?time_style:JavaDate.format_style ->
    ?locale:JavaLocale.t ->
    ?time_zone:JavaTimeZone.t -> unit -> JavaDate.format
  val make_simple_format :
    ?pattern:JavaString.t ->
    ?locale:JavaLocale.t ->
    ?time_zone:JavaTimeZone.t -> unit -> JavaDate.format
  val to_string : JavaDate.format -> JavaDate.t -> JavaString.t
  val of_string : JavaDate.format -> JavaString.t -> JavaDate.t
  val null : JavaDate.t
  external is_null : JavaDate.t -> bool = "java is_null"
  external is_not_null : JavaDate.t -> bool = "java is_not_null"
  val wrap : JavaDate.t -> JavaDate.t option
  val unwrap : JavaDate.t option -> JavaDate.t
end