package calendar

  1. Overview
  2. Docs

More precise implementation of calendar in which seconds are integer.

  • since 2.0

Datatypes

module Date = Date

Date implementation used by this calendar.

module Time = Time

Time implementation used by this calendar.

type t
type day = Date.day =
  1. | Sun
  2. | Mon
  3. | Tue
  4. | Wed
  5. | Thu
  6. | Fri
  7. | Sat
    (*

    Days of the week.

    *)
type month = Date.month =
  1. | Jan
  2. | Feb
  3. | Mar
  4. | Apr
  5. | May
  6. | Jun
  7. | Jul
  8. | Aug
  9. | Sep
  10. | Oct
  11. | Nov
  12. | Dec
    (*

    Months of the year.

    *)
type year = Date.year

Year as an int

type second = Time.second
type field = [
  1. | Date.field
  2. | Time.field
]

The different fields of a calendar.

Constructors

val make : int -> int -> int -> int -> int -> second -> t

make year month day hour minute second makes the calendar "year-month-day; hour-minute-second".

  • raises D.Out_of_bounds

    when a date is outside the Julian period.

  • raises D.Undefined

    when a date belongs to [October 5th, 1582; October 14th, 1582].

val lmake : year:int -> ?month:int -> ?day:int -> ?hour:int -> ?minute:int -> ?second:second -> unit -> t

Labelled version of make. The default value of month and day (resp. of hour, minute and second) is 1 (resp. 0).

  • raises D.Out_of_bounds

    when a date is outside the Julian period.

  • raises D.Undefined

    when a date belongs to [October 5th, 1582; October 14th, 1582].

  • since 1.05
val create : Date.t -> Time.t -> t

create d t creates a calendar from the given date and time.

val now : unit -> t

now () returns the current date and time (in the current time zone).

val from_jd : float -> t

Return the Julian day. More precise than Date.from_jd: the fractional part represents the time.

val from_mjd : float -> t

Return the Modified Julian day. It is Julian day - 2 400 000.5 (more precise than Date.from_mjd).

Conversions

Those functions have the same behaviour as those defined in Time_sig.S.

val convert : t -> Time_Zone.t -> Time_Zone.t -> t
val to_gmt : t -> t
val from_gmt : t -> t

Getters

Those functions have the same behavious as those defined in Date_sig.S.

val days_in_month : t -> int
val day_of_week : t -> day
val day_of_month : t -> int
val day_of_year : t -> int
val week : t -> int
val month : t -> month
val year : t -> int

to_jd and to_mjd are more precise than Date_sig.S.to_jd and Date_sig.S.to_mjd.

val to_jd : t -> float
val to_mjd : t -> float

Those functions have the same behavious as those defined in Time_sig.S.

val hour : t -> int
val minute : t -> int
val second : t -> second

Calendars are comparable

val equal : t -> t -> bool

Equality function between two calendars.

val compare : t -> t -> int

Comparison function between two calendars.

val hash : t -> int

Hash function for calendars.

  • since 2.0

Those functions have the same behavious as those defined in Date_sig.S.

val is_leap_day : t -> bool
val is_gregorian : t -> bool
val is_julian : t -> bool

Those functions have the same behavious as those defined in Time_sig.S.

val is_pm : t -> bool
val is_am : t -> bool

Coercions

val to_unixtm : t -> Unix.tm

Convert a calendar into the unix.tm type. The field isdst is always false. More precise than Date_sig.S.to_unixtm.

  • since 1.01
val from_unixtm : Unix.tm -> t

Inverse of to_unixtm. Assumes the current time zone. So, The following invariant holds: hour (from_unixtm u) = u.Unix.tm_hour.

  • since 1.01
val to_unixfloat : t -> float

Convert a calendar to a float such than to_unixfloat (make 1970 1 1 0 0 0) returns 0.0 at UTC. So such a float is convertible with those of the module Unix. More precise than Date_sig.S.to_unixfloat.

  • since 1.01
val from_unixfloat : float -> t

Inverse of to_unixfloat. Assumes the current time zone. So, the following invariant holds: hour (from_unixfloat u) = (Unix.gmtime u).Unix.tm_hour.

  • since 1.01
val from_date : Date.t -> t

Convert a date to a calendar. The time is midnight in the current time zone.

val to_date : t -> Date.t

Convert a calendar to a date. Time part of the calendar is ignored.

val to_time : t -> Time.t

Convert a calendar to a time. Date part of the calendar is ignored.

  • since 1.03

Period

module Period : sig ... end

A period is the number of seconds between two calendars.

Arithmetic operations on calendars and periods

Those functions have the same behavious as those defined in Date_sig.S.

val add : t -> 'a Period.period -> t
val sub : t -> t -> [> `Week | `Day ] Period.period
val precise_sub : t -> t -> Period.t
  • since 2.03
val rem : t -> 'a Period.period -> t
val next : t -> field -> t
val prev : t -> field -> t
OCaml

Innovation. Community. Security.