type t = private Int63.ttis immediate on 64bit boxes and so plays nicely with the GC write barrier.
String and sexp output takes the form 'HH:MM:SS.sssssssss'; see Core_kernel.Ofday_intf for accepted input. If input includes more than 9 decimal places in seconds, rounds to the nearest nanosecond, with the midpoint rounded up. Allows 60.sss... seconds for leap seconds but treats it as exactly 60s regardless of fractional part.
type underlying = Int63.tTime of day.
trepresents a clock-face time of day. Usually this is equivalent to a time-offset from midnight, and eachtoccurs exactly once in each calendar day. However, when daylight saving time begins or ends, some clock face times (and thereforet's) can occur more than once per day or not at all, and e.g. 04:00 can occur three or five hours after midnight, so knowing your current offset from midnight is *not* in general equivalent to knowing the currentt.(See
Zonefor tools to help you cope with DST.)There is one nonstandard representable value,
start_of_next_day, which can be thought of as "24:00:00" in 24-hour time. It is essentially "00:00:00" on the next day. By having this value, we allow comparisons against a strict upper bound ontvalues. However, it has some odd properties; for example,Time.of_date_ofday ~zone date start_of_next_day |> Time.to_date ~zoneyields a different date.Any
ofdaywill satisfystart_of_day <= ofday <= start_of_next_day.
include Bin_prot.Binable.S with type t := t
include Bin_prot.Binable.S_only_functions with type t := t
val bin_size_t : t Bin_prot.Size.sizerval bin_write_t : t Bin_prot.Write.writerval bin_read_t : t Bin_prot.Read.readerval __bin_read_t__ : (int -> t) Bin_prot.Read.readerThis function only needs implementation if
texposed to be a polymorphic variant. Despite what the type reads, this does *not* produce a function after reading; instead it takes the constructor tag (int) before reading and reads the rest of the varianttafterwards.
val bin_shape_t : Bin_prot.Shape.tval bin_writer_t : t Bin_prot.Type_class.writerval bin_reader_t : t Bin_prot.Type_class.readerval bin_t : t Bin_prot.Type_class.t
include Ppx_sexp_conv_lib.Sexpable.S with type t := t
val t_of_sexp : Sexplib0.Sexp.t -> tval sexp_of_t : t -> Sexplib0.Sexp.t
include Typerep_lib.Typerepable.S with type t := t
val typerep_of_t : t Typerep_lib.Std_internal.Typerep.tval typename_of_t : t Typerep_lib.Typename.t
include Base.Comparable.S with type t := t
val ascending : t -> t -> intascendingis identical tocompare.descending x y = ascending y x. These are intended to be mnemonic when used likeList.sort ~compare:ascendingandList.sort ~cmp:descending, since they cause the list to be sorted in ascending or descending order, respectively.
val descending : t -> t -> intval between : t -> low:t -> high:t -> boolbetween t ~low ~highmeanslow <= t <= high
val clamp_exn : t -> min:t -> max:t -> tclamp_exn t ~min ~maxreturnst', the closest value totsuch thatbetween t' ~low:min ~high:maxis true.Raises if
not (min <= max).
val clamp : t -> min:t -> max:t -> t Base.Or_error.t
include Base.Comparator.S with type t := t
val comparator : (t, comparator_witness) Base.Comparator.comparator
val validate_lbound : min:t Base.Maybe_bound.t -> t Base.Validate.checkval validate_ubound : max:t Base.Maybe_bound.t -> t Base.Validate.checkval validate_bound : min:t Base.Maybe_bound.t -> max:t Base.Maybe_bound.t -> t Base.Validate.check
module Replace_polymorphic_compare : sig ... endinclude Comparator.S with type comparator_witness := comparator_witness and type t := t
val comparator : (t, comparator_witness) Comparator.comparator
module Map : Map.S_binable with type Key.t = t with type Key.comparator_witness = comparator_witnessmodule Set : Set.S_binable with type Elt.t = t with type Elt.comparator_witness = comparator_witnessval hash_fold_t : Base.Hash.state -> t -> Base.Hash.stateval hash : t -> Base.Hash.hash_value
val hashable : t Hashtbl.Hashable.t
module Table : Hashtbl.S_binable with type key = tmodule Hash_set : Hash_set.S_binable with type elt = tmodule Hash_queue : Hash_queue.S with type key = tinclude Base.Pretty_printer.S with type t := t
val pp : Base.Formatter.t -> t -> unit
include Quickcheck.S_range with type t := t
include Quickcheck_intf.S with type t := t
val quickcheck_generator : t Base_quickcheck.Generator.tval quickcheck_observer : t Base_quickcheck.Observer.tval quickcheck_shrinker : t Base_quickcheck.Shrinker.t
val gen_incl : t -> t -> t Base_quickcheck.Generator.tgen_incl lower_bound upper_boundproduces values betweenlower_boundandupper_bound, inclusive. It uses an ad hoc distribution that stresses boundary conditions more often than a uniform distribution, while still able to produce any value in the range. Raises iflower_bound > upper_bound.
val gen_uniform_incl : t -> t -> t Base_quickcheck.Generator.tgen_uniform_incl lower_bound upper_boundproduces a generator for values uniformly distributed betweenlower_boundandupper_bound, inclusive. Raises iflower_bound > upper_bound.
val create : ?hr:Base.Int.t -> ?min:Base.Int.t -> ?sec:Base.Int.t -> ?ms:Base.Int.t -> ?us:Base.Int.t -> ?ns:Base.Int.t -> Base.Unit.t -> tval to_parts : t -> Span.Parts.tval start_of_day : tSmallest valid ofday.
val start_of_next_day : tLargest representable ofday; see notes above on how
start_of_next_daybehaves differently from other ofday values.
val approximate_end_of_day : tA time very close to the end of a day. Not necessarily the largest representable value before
start_of_next_day, but as close as possible such that using this ofday withTime.of_date_ofdayandTime.to_dateshould round-trip to the same date. With floating-point representations of time, this may not be possible for dates extremely far from epoch.The clock-face time represented by
approximate_end_of_daymay vary with different time and ofday representations, depending on their precision.
val to_span_since_start_of_day : t -> Span.tNote that these names are only really accurate on days without DST transitions. When clocks move forward or back,
of_span_since_start_of_day_exn swill not necessarily occursafter that day's midnight.
val of_span_since_start_of_day_exn : Span.t -> tval of_span_since_start_of_day : Span.t -> tval span_since_start_of_day_is_valid : Span.t -> Base.Bool.tReports whether a span represents a valid time since the start of the day, i.e. whether
of_span_since_start_of_day_exn spanwould succeed.
val of_span_since_start_of_day_unchecked : Span.t -> tof_span_since_start_of_day_uncheckeddoes not validate that theSpanrepresents a validOfday.Behavior of other
Ofdayaccessors is unspecified, but still safe (e.g., won't segfault), if the input does not satisfyspan_since_start_of_day_is_valid.
val add : t -> Span.t -> t Base.Option.tadd t sshifts the time of daytby the spans. It returnsNoneif the result is not in the same 24-hour day.
val sub : t -> Span.t -> t Base.Option.tval next : t -> t Base.Option.tnext treturn the nextt(next t > t) or None ift= end of day.
val prev : t -> t Base.Option.tprev treturn the previoust(prev t < t) or None ift= start of day.
val diff : t -> t -> Span.tdiff t1 t2returns the difference in time between two ofdays, as if they occurred on the same 24-hour day.
val small_diff : t -> t -> Span.tReturns the time-span separating the two of-days, ignoring the hour information, and assuming that the of-days represent times that are within a half-hour of each other. This is useful for comparing two ofdays in unknown time-zones.
val to_string_trimmed : t -> Base.String.tTrailing groups of zeroes are trimmed such that the output is printed in terms of the smallest non-zero units among nanoseconds, microseconds, milliseconds, or seconds; or minutes if all of the above are zero.
val to_sec_string : t -> Base.String.tHH:MM:SS, without any subsecond components. Seconds appear even if they are zero.
val of_string_iso8601_extended : ?pos:Base.Int.t -> ?len:Base.Int.t -> Base.String.t -> t24-hour times according to the ISO 8601 standard. This function can raise.
val to_millisecond_string : t -> Base.String.twith milliseconds
val to_millisec_string : t -> Base.String.t
val approximate_end_of_day : tThe largest representable value below
start_of_next_day, i.e. one nanosecond before midnight.
val add_exn : t -> Span.t -> tadd_exn t spanshifts the time of daytbyspan. It raises if the result is not in the same 24-hour day. Daylight savings shifts are not accounted for.
val sub_exn : t -> Span.t -> tsub_exn t spanshifts the time of daytback byspan. It raises if the result is not in the same 24-hour day. Daylight savings shifts are not accounted for.
val every : Span.t -> start:t -> stop:t -> t Base.List.t Or_error.tevery span ~start ~stopreturns a sorted list of allts that can be expressed asstart + (i * span)without overflow, and satisfyingt >= start && t <= stop.If
span <= Span.zero || start > stop, returns an Error.The result never crosses the midnight boundary. Constructing a list crossing midnight, e.g. every hour from 10pm to 2am, requires multiple calls to
every.