tempo

Types

pub type Date {
  Date(year: Int, month: Month, day: Int)
}

Constructors

  • Date(year: Int, month: Month, day: Int)
pub type DateTime {
  DateTime(naive: NaiveDateTime, offset: Offset)
}

Constructors

  • DateTime(naive: NaiveDateTime, offset: Offset)
pub type Duration {
  Duration(nanoseconds: Int)
}

Constructors

  • Duration(nanoseconds: Int)
pub type Error {
  TimeInvalidFormat
  TimeOutOfBounds
  DateInvalidFormat
  DateOutOfBounds
  MonthInvalidFormat
  MonthOutOfBounds
  OffsetInvalidFormat
  OffsetOutOfBounds
  NaiveDateTimeInvalidFormat
  NaiveDateTimeOutOfBounds
  DateTimeInvalidFormat
  DateTimeOutOfBounds
}

Constructors

  • TimeInvalidFormat
  • TimeOutOfBounds
  • DateInvalidFormat
  • DateOutOfBounds
  • MonthInvalidFormat
  • MonthOutOfBounds
  • OffsetInvalidFormat
  • OffsetOutOfBounds
  • NaiveDateTimeInvalidFormat
  • NaiveDateTimeOutOfBounds
  • DateTimeInvalidFormat
  • DateTimeOutOfBounds
pub type Month {
  Jan
  Feb
  Mar
  Apr
  May
  Jun
  Jul
  Aug
  Sep
  Oct
  Nov
  Dec
}

Constructors

  • Jan
  • Feb
  • Mar
  • Apr
  • May
  • Jun
  • Jul
  • Aug
  • Sep
  • Oct
  • Nov
  • Dec
pub type NaiveDateTime {
  NaiveDateTime(date: Date, time: Time)
}

Constructors

  • NaiveDateTime(date: Date, time: Time)
pub type Offset {
  Offset(minutes: Int)
}

Constructors

  • Offset(minutes: Int)
pub type Period {
  Period(start: NaiveDateTime, end: NaiveDateTime)
}

Constructors

  • Period(start: NaiveDateTime, end: NaiveDateTime)

Do not use the == operator to check for time equality! Use the compare functions instead.

Second precision is defined as different variants to have a way to preserve precision when going to and from strings or other representations.

pub type Time {
  Time(hour: Int, minute: Int, second: Int, nanosecond: Int)
  TimeMilli(hour: Int, minute: Int, second: Int, nanosecond: Int)
  TimeMicro(hour: Int, minute: Int, second: Int, nanosecond: Int)
  TimeNano(hour: Int, minute: Int, second: Int, nanosecond: Int)
}

Constructors

  • Time(hour: Int, minute: Int, second: Int, nanosecond: Int)
  • TimeMilli(hour: Int, minute: Int, second: Int, nanosecond: Int)
  • TimeMicro(hour: Int, minute: Int, second: Int, nanosecond: Int)
  • TimeNano(hour: Int, minute: Int, second: Int, nanosecond: Int)
pub type UncertainConversion(a) {
  Precise(a)
  Imprecise(a)
}

Constructors

  • Precise(a)
  • Imprecise(a)

Constants

pub const months: List(Month)

Functions

pub fn accept_imprecision(conv: UncertainConversion(a)) -> a
pub fn error_on_imprecision(
  conv: UncertainConversion(a),
) -> Result(a, Nil)
Search Document