sig
  type t = java'util'Calendar java_instance
  val now :
    ?locale:JavaLocale.t -> ?zone:JavaTimeZone.t -> unit -> JavaCalendar.t
  type am_pm = AM | PM
  type month =
      January
    | February
    | March
    | April
    | May
    | June
    | July
    | August
    | September
    | October
    | November
    | December
    | Undecimber
  type day =
      Monday
    | Tuesday
    | Wednesday
    | Thursday
    | Friday
    | Saturday
    | Sunday
  type _ field =
      Era : java_int JavaCalendar.field
    | Year : java_int JavaCalendar.field
    | Month : JavaCalendar.month JavaCalendar.field
    | Week_of_month : java_int JavaCalendar.field
    | Week_of_year : java_int JavaCalendar.field
    | Date : java_int JavaCalendar.field
    | Day_of_month : java_int JavaCalendar.field
    | Day_of_week : JavaCalendar.day JavaCalendar.field
    | Day_of_week_in_month : java_int JavaCalendar.field
    | Day_of_year : java_int JavaCalendar.field
    | AM_PM : JavaCalendar.am_pm JavaCalendar.field
    | Hour : java_int JavaCalendar.field
    | Hour_of_day : java_int JavaCalendar.field
    | Minute : java_int JavaCalendar.field
    | Second : java_int JavaCalendar.field
    | Millisecond : java_int JavaCalendar.field
    | Dst_offset : java_int JavaCalendar.field
    | Zone_offset : java_int JavaCalendar.field
  val get_time : JavaCalendar.t -> java_long
  val after : JavaCalendar.t -> JavaCalendar.t -> bool
  val before : JavaCalendar.t -> JavaCalendar.t -> bool
  val compare_to : JavaCalendar.t -> JavaCalendar.t -> int
  val get : JavaCalendar.t -> 'JavaCalendar.field -> 'a
  val get_time_zone : JavaCalendar.t -> JavaTimeZone.t
  val add :
    JavaCalendar.t -> 'JavaCalendar.field -> java_int -> JavaCalendar.t
  val set : JavaCalendar.t -> 'JavaCalendar.field -> '-> JavaCalendar.t
  val clear : JavaCalendar.t -> 'JavaCalendar.field -> JavaCalendar.t
  val clear_all : JavaCalendar.t -> JavaCalendar.t
  val set_time_zone : JavaCalendar.t -> JavaTimeZone.t -> JavaCalendar.t
  val to_date : JavaCalendar.t -> JavaDate.t
  val of_date : JavaDate.t -> JavaCalendar.t
  val to_iso8601 : JavaCalendar.t -> JavaString.t
  val of_iso8601 : JavaString.t -> JavaCalendar.t
  val null : JavaCalendar.t
  external is_null : JavaCalendar.t -> bool = "java is_null"
  external is_not_null : JavaCalendar.t -> bool = "java is_not_null"
  val wrap : JavaCalendar.t -> JavaCalendar.t option
  val unwrap : JavaCalendar.t option -> JavaCalendar.t
end