Module Datetime

Implementation of the date/time types and operations.

val is_leapyear : Imandra_prelude.int -> bool

Helper function that determines wether the year is a leap year

val how_many_days : Imandra_prelude.int -> Imandra_prelude.int -> Z.t

Days in month helper function

val valid_day : Imandra_prelude.int -> Imandra_prelude.int -> Imandra_prelude.int -> bool
type field_carryover = {
carry_over : bool;
new_field : Imandra_prelude.int;
}
val calculate_carry : Imandra_prelude.int -> Imandra_prelude.int -> Imandra_prelude.int -> field_carryover
type fix_utctimestamp_milli = {
utc_timestamp_year : Imandra_prelude.int;
utc_timestamp_month : Imandra_prelude.int;
utc_timestamp_day : Imandra_prelude.int;
utc_timestamp_hour : Imandra_prelude.int;
utc_timestamp_minute : Imandra_prelude.int;
utc_timestamp_second : Imandra_prelude.int;
utc_timestamp_millisec : Imandra_prelude.int option;
}

UTC Timestamp type.

type fix_utctimestamp_micro = {
utc_timestamp_year : Imandra_prelude.int;
utc_timestamp_month : Imandra_prelude.int;
utc_timestamp_day : Imandra_prelude.int;
utc_timestamp_hour : Imandra_prelude.int;
utc_timestamp_minute : Imandra_prelude.int;
utc_timestamp_second : Imandra_prelude.int;
utc_timestamp_microsec : Imandra_prelude.int option;
}
val default_utctimestamp_milli : fix_utctimestamp_milli

Default timestamp is 0 unix epoch timestamp

val default_utctimestamp_micro : fix_utctimestamp_micro

Default timestamp is 0 unix epoch timestamp

val normalise_utctimestamp_milli : fix_utctimestamp_milli -> fix_utctimestamp_milli
val normalise_utctimestamp_micro : fix_utctimestamp_micro -> fix_utctimestamp_micro
val make_utctimestamp_milli : Imandra_prelude.int -> Imandra_prelude.int -> Imandra_prelude.int -> Imandra_prelude.int -> Imandra_prelude.int -> Imandra_prelude.int -> Imandra_prelude.int option -> fix_utctimestamp_milli

Constructor for the UTC timestamp milli

val make_utctimestamp_micro : Imandra_prelude.int -> Imandra_prelude.int -> Imandra_prelude.int -> Imandra_prelude.int -> Imandra_prelude.int -> Imandra_prelude.int -> Imandra_prelude.int option -> fix_utctimestamp_micro

Constructor for the UTC timestamp micro

val convert_utctimestamp_milli_micro : fix_utctimestamp_milli -> fix_utctimestamp_micro

Conversion for the UTC timestamp and timeonly fields

val convert_utctimestamp_micro_milli : fix_utctimestamp_micro -> fix_utctimestamp_milli
val is_valid_utctimestamp_milli : fix_utctimestamp_milli -> bool

Checking validity of the values in the UTC timestamp milli

val is_valid_utctimestamp_micro : fix_utctimestamp_micro -> bool

Checking validity of the values in the UTC timestamp micro

val utctimestamp_Equal_milli_milli : fix_utctimestamp_milli -> fix_utctimestamp_milli -> bool

Two UTC timestamps are equal if they have equal field values

val utctimestamp_Equal_micro_micro : fix_utctimestamp_micro -> fix_utctimestamp_micro -> bool
val utctimestamp_Equal_milli_micro : fix_utctimestamp_milli -> fix_utctimestamp_micro -> bool
val utctimestamp_Equal_micro_milli : fix_utctimestamp_micro -> fix_utctimestamp_milli -> bool
val utctimestamp_GreaterThan_milli_milli : fix_utctimestamp_milli -> fix_utctimestamp_milli -> bool

UTC Timestamp milli base comparison operator

val utctimestamp_GreaterThan_micro_micro : fix_utctimestamp_micro -> fix_utctimestamp_micro -> bool

UTC Timestamp milli base comparison operator

val utctimestamp_GreaterThan_milli_micro : fix_utctimestamp_milli -> fix_utctimestamp_micro -> bool

UTC Timestamp base comparison operator - milli to micro

val utctimestamp_GreaterThan_micro_milli : fix_utctimestamp_micro -> fix_utctimestamp_milli -> bool

UTC Timestamp base comparison operator - micro to milli

val utctimestamp_GreaterThanEqual_milli_milli : fix_utctimestamp_milli -> fix_utctimestamp_milli -> bool
val utctimestamp_GreaterThanEqual_micro_micro : fix_utctimestamp_micro -> fix_utctimestamp_micro -> bool
val utctimestamp_GreaterThanEqual_milli_micro : fix_utctimestamp_milli -> fix_utctimestamp_micro -> bool
val utctimestamp_GreaterThanEqual_micro_milli : fix_utctimestamp_micro -> fix_utctimestamp_milli -> bool
val utctimestamp_LessThan_milli_milli : fix_utctimestamp_milli -> fix_utctimestamp_milli -> bool
val utctimestamp_LessThan_micro_micro : fix_utctimestamp_micro -> fix_utctimestamp_micro -> bool
val utctimestamp_LessThan_milli_micro : fix_utctimestamp_milli -> fix_utctimestamp_micro -> bool
val utctimestamp_LessThan_micro_milli : fix_utctimestamp_micro -> fix_utctimestamp_milli -> bool
val utctimestamp_LessThanEqual_milli_milli : fix_utctimestamp_milli -> fix_utctimestamp_milli -> bool
val utctimestamp_LessThanEqual_micro_micro : fix_utctimestamp_micro -> fix_utctimestamp_micro -> bool
val utctimestamp_LessThanEqual_milli_micro : fix_utctimestamp_milli -> fix_utctimestamp_micro -> bool
val utctimestamp_LessThanEqual_micro_milli : fix_utctimestamp_micro -> fix_utctimestamp_milli -> bool
type fix_localmktdate = {
localmktdate_year : Imandra_prelude.int;
localmktdate_month : Imandra_prelude.int;
localmktdate_day : Imandra_prelude.int;
}

LocalMktDate type denotes a particular date

val default_localmktdate : fix_localmktdate

Default LocalMktDate corresponds to 0 unix epoch timestamp

val make_localmktdate : Imandra_prelude.int -> Imandra_prelude.int -> Imandra_prelude.int -> fix_localmktdate

LocalMktDate constructor

val is_valid_localmktdate : fix_localmktdate -> bool
val localmktdate_GreaterThan : fix_localmktdate -> fix_localmktdate -> bool
val localmktdate_LessThan : fix_localmktdate -> fix_localmktdate -> bool
val localmktdate_Equal : fix_localmktdate -> fix_localmktdate -> bool
val localmktdate_GreaterThanEqual : fix_localmktdate -> fix_localmktdate -> bool
val localmktdate_LessThanEqual : fix_localmktdate -> fix_localmktdate -> bool
type fix_week =
| Week_1
| Week_2
| Week_3
| Week_4
| Week_5

Week

type fix_monthyear = {
monthyear_year : Imandra_prelude.int;
monthyear_month : Imandra_prelude.int;
monthyear_day : Imandra_prelude.int option;
monthyear_week : fix_week option;
}

MonthYear

val default_monthyear : fix_monthyear
val make_monthyear : Imandra_prelude.int -> Imandra_prelude.int -> fix_week option -> fix_monthyear
val is_valid_monthyear : fix_monthyear -> bool
val monthyear_GreaterThan : fix_monthyear -> fix_monthyear -> bool

TODO: Add support for weeks!

val monthyear_LessThan : fix_monthyear -> fix_monthyear -> bool
val monthyear_Equal : fix_monthyear -> fix_monthyear -> bool
val monthyear_GreaterThanEqual : fix_monthyear -> fix_monthyear -> bool
val monthyear_LessThanEqual : fix_monthyear -> fix_monthyear -> bool
type fix_utctimeonly_milli = {
utc_timeonly_hour : Imandra_prelude.int;
utc_timeonly_minute : Imandra_prelude.int;
utc_timeonly_second : Imandra_prelude.int;
utc_timeonly_millisec : Imandra_prelude.int option;
}

UTC Timeonly

type fix_utctimeonly_micro = {
utc_timeonly_hour : Imandra_prelude.int;
utc_timeonly_minute : Imandra_prelude.int;
utc_timeonly_second : Imandra_prelude.int;
utc_timeonly_microsec : Imandra_prelude.int option;
}
val default_utctimeonly_milli : fix_utctimeonly_milli
val default_utctimeonly_micro : fix_utctimeonly_micro
val normalise_utctimeonly_milli : fix_utctimeonly_milli -> fix_utctimeonly_milli
val normalise_utctimeonly_micro : fix_utctimeonly_micro -> fix_utctimeonly_micro
val make_utctimeonly_milli : Imandra_prelude.int -> Imandra_prelude.int -> Imandra_prelude.int -> Imandra_prelude.int option -> fix_utctimeonly_milli
val make_utctimeonly_micro : Imandra_prelude.int -> Imandra_prelude.int -> Imandra_prelude.int -> Imandra_prelude.int option -> fix_utctimeonly_micro
val convert_utctimeonly_milli_micro : fix_utctimeonly_milli -> fix_utctimeonly_micro
val convert_utctimeonly_micro_milli : fix_utctimeonly_micro -> fix_utctimeonly_milli
val is_valid_utctimeonly_milli : fix_utctimeonly_milli -> bool
val is_valid_utctimeonly_micro : fix_utctimeonly_micro -> bool
val utctimeonly_Equal_milli_milli : fix_utctimeonly_milli -> fix_utctimeonly_milli -> bool
val utctimeonly_Equal_micro_micro : fix_utctimeonly_micro -> fix_utctimeonly_micro -> bool
val utctimeonly_Equal_milli_micro : fix_utctimeonly_milli -> fix_utctimeonly_micro -> bool
val utctimeonly_Equal_micro_milli : fix_utctimeonly_micro -> fix_utctimeonly_milli -> bool
val utctimeonly_GreaterThan_milli_milli : fix_utctimeonly_milli -> fix_utctimeonly_milli -> bool
val utctimeonly_GreaterThan_micro_micro : fix_utctimeonly_micro -> fix_utctimeonly_micro -> bool
val utctimeonly_GreaterThan_milli_micro : fix_utctimeonly_milli -> fix_utctimeonly_micro -> bool
val utctimeonly_GreaterThan_micro_milli : fix_utctimeonly_micro -> fix_utctimeonly_milli -> bool
val utctimeonly_LessThan_milli_milli : fix_utctimeonly_milli -> fix_utctimeonly_milli -> bool
val utctimeonly_LessThan_micro_micro : fix_utctimeonly_micro -> fix_utctimeonly_micro -> bool
val utctimeonly_LessThan_milli_micro : fix_utctimeonly_milli -> fix_utctimeonly_micro -> bool
val utctimeonly_LessThan_micro_milli : fix_utctimeonly_micro -> fix_utctimeonly_milli -> bool
val utctimeonly_LessThanEqual_milli_milli : fix_utctimeonly_milli -> fix_utctimeonly_milli -> bool
val utctimeonly_LessThanEqual_micro_micro : fix_utctimeonly_micro -> fix_utctimeonly_micro -> bool
val utctimeonly_LessThanEqual_milli_micro : fix_utctimeonly_milli -> fix_utctimeonly_micro -> bool
val utctimeonly_LessThanEqual_micro_milli : fix_utctimeonly_micro -> fix_utctimeonly_milli -> bool
val utctimeonly_GreaterThanEqual_milli_milli : fix_utctimeonly_milli -> fix_utctimeonly_milli -> bool
val utctimeonly_GreaterThanEqual_micro_micro : fix_utctimeonly_micro -> fix_utctimeonly_micro -> bool
val utctimeonly_GreaterThanEqual_milli_micro : fix_utctimeonly_milli -> fix_utctimeonly_micro -> bool
val utctimeonly_GreaterThanEqual_micro_milli : fix_utctimeonly_micro -> fix_utctimeonly_milli -> bool
type fix_utcdateonly = {
utc_dateonly_year : Imandra_prelude.int;
utc_dateonly_month : Imandra_prelude.int;
utc_dateonly_day : Imandra_prelude.int;
}

UTC Dateonly

val default_utcdateonly : fix_utcdateonly

UTC Dateonly

val make_utcdateonly : Imandra_prelude.int -> Imandra_prelude.int -> Imandra_prelude.int -> fix_utcdateonly
val is_valid_utcdateonly : fix_utcdateonly -> bool
val utcdateonly_GreaterThan : fix_utcdateonly -> fix_utcdateonly -> bool
val utcdateonly_LessThan : fix_utcdateonly -> fix_utcdateonly -> bool
val utcdateonly_Equal : fix_utcdateonly -> fix_utcdateonly -> bool
val utcdateonly_GreaterThanEqual : fix_utcdateonly -> fix_utcdateonly -> bool
val utcdateonly_LessThanEqual : fix_utcdateonly -> fix_utcdateonly -> bool
type fix_duration = {
dur_years : Imandra_prelude.int;
dur_months : Imandra_prelude.int;
dur_days : Imandra_prelude.int;
dur_hours : Imandra_prelude.int;
dur_minutes : Imandra_prelude.int;
dur_seconds : Imandra_prelude.int;
}

Duration

val is_valid_duration : fix_duration -> bool
val normalise_duration : fix_duration -> fix_duration
val make_duration : Imandra_prelude.int -> Imandra_prelude.int -> Imandra_prelude.int -> Imandra_prelude.int -> Imandra_prelude.int -> Imandra_prelude.int -> fix_duration
val utctimestamp_milli_duration_Add : fix_utctimestamp_milli -> fix_duration -> fix_utctimestamp_milli
val duration_utctimestamp_milli_Add : fix_duration -> fix_utctimestamp_milli -> fix_utctimestamp_milli
val utctimestamp_micro_duration_Add : fix_utctimestamp_micro -> fix_duration -> fix_utctimestamp_micro
val duration_utctimestamp_micro_Add : fix_duration -> fix_utctimestamp_micro -> fix_utctimestamp_micro
val seconds_to_duration : Imandra_prelude.int -> fix_duration
val duration_to_seconds : fix_duration -> Z.t

TODO This is unfinished -- check how months are accounted for

val duration_Equal : 'a -> 'a -> bool
val duration_GreaterThan : fix_duration -> fix_duration -> bool
val duration_GreaterThanEqual : fix_duration -> fix_duration -> bool
val duration_LessThan : fix_duration -> fix_duration -> bool
val duration_LessThanEqual : fix_duration -> fix_duration -> bool
val convert_utctimestamp_milli_utctimeonly_milli : fix_utctimestamp_milli -> fix_utctimeonly_milli
val convert_utctimestamp_micro_utctimeonly_micro : fix_utctimestamp_micro -> fix_utctimeonly_micro
val convert_utctimestamp_milli_utctimeonly_micro : fix_utctimestamp_milli -> fix_utctimeonly_micro
val convert_utctimestamp_micro_utctimeonly_milli : fix_utctimestamp_micro -> fix_utctimeonly_milli
val convert_utctimestamp_micro_localmktdate : fix_utctimestamp_micro -> fix_localmktdate
val convert_utctimestamp_milli_localmktdate : fix_utctimestamp_milli -> fix_localmktdate
val convert_utctimestamp_micro_dateonly : fix_utctimestamp_micro -> fix_utcdateonly
val convert_utctimestamp_milli_dateonly : fix_utctimestamp_milli -> fix_utcdateonly
val convert_utctimestamp_micro_monthyear : fix_utctimestamp_micro -> fix_monthyear
val convert_utctimestamp_milli_monthyear : fix_utctimestamp_milli -> fix_monthyear