chronos-0.3: A time library, encoding, decoding, and instances

Safe HaskellNone
LanguageHaskell2010

Chronos.Types

Description

Data types for representing different date and time-related information.

Internally, the types Int and Int64 are used to represent everything. These are used even when negative values are not appropriate and even if a smaller fixed-size integer could hold the information. The only cases when Int64 is used are when it is neccessary to represent values with numbers 2^29 or higher. These are typically fields that represent nanoseconds.

Unlike the types in the venerable time library, the types here do not allow the user to work with all dates. Since this library uses fixed-precision integral values instead of Integer, all of the usual problems with overflow should be considered. Notably, PosixTime and TaiTime can only be used to represent time between the years 1680 and 2260. All other types in this library correctly represent time a million years before or after 1970.

The vector unbox instances, not yet available, will store data in a reasonably compact manner. For example, the instance for Day has three unboxed vectors: Int for the year, Int8 for the month, and Int8 for the day. This only causes corruption of data if the user is trying to use out-of-bounds values for the month and the day. Users are advised to not use the data types provided here to model non-existent times.

Synopsis

Documentation

newtype Day Source

A day represented as the modified Julian date, the number of days since midnight on November 17, 1858.

Constructors

Day 

Fields

getDay :: Int
 

newtype Year Source

The number of years elapsed since the beginning of the Common Era.

Constructors

Year 

Fields

getYear :: Int
 

newtype TaiTime Source

TAI time with nanosecond resolution.

Constructors

TaiTime 

Fields

getTaiTime :: Int64
 

newtype DayOfWeekMatch a Source

Constructors

DayOfWeekMatch 

newtype MonthMatch a Source

Constructors

MonthMatch 

Fields

getMonthMatch :: Vector a
 

data SubsecondPrecision Source

The precision used when encoding seconds to a human-readable format.

Constructors

SubsecondPrecisionAuto

Rounds to second, millisecond, microsecond, or nanosecond

SubsecondPrecisionFixed !Int

Specify number of places after decimal

data Date Source

A date as represented by the Gregorian calendar.

Constructors

Date 

data OrdinalDate Source

The year and number of days elapsed since the beginning it began.

data MonthDate Source

A month and the day of the month. This does not actually represent a specific date, since this recurs every year.

Constructors

MonthDate 

data Datetime Source

A date as represented by the Gregorian calendar and a time of day.

Constructors

Datetime 

data TimeOfDay Source

A time of day with nanosecond resolution.

data DatetimeLocale a Source

Locale-specific formatting for weekdays and months. The type variable will likely be instantiated to Text or ByteString.

Constructors

DatetimeLocale 

Fields

datetimeLocaleDaysOfWeekFull :: !(DayOfWeekMatch a)

full weekdays starting with Sunday, 7 elements

datetimeLocaleDaysOfWeekAbbreviated :: !(DayOfWeekMatch a)

abbreviated weekdays starting with Sunday, 7 elements

datetimeLocaleMonthsFull :: !(MonthMatch a)

full months starting with January, 12 elements

datetimeLocaleMonthsAbbreviated :: !(MonthMatch a)

abbreviated months starting with January, 12 elements

data MeridiemLocale a Source

Locale-specific formatting for AM and PM.

Constructors

MeridiemLocale 

Fields

meridiemLocaleAm :: !a
 
meridiemLocalePm :: !a