figbus / elm-urbit-api / Urbit.Encoding.DateAbsolute

Encoding/Decoding module for urbit

Date Record


type alias DateRecord =
{ year : Basics.Int
, month : Basics.Int
, day : Basics.Int
, hour : Basics.Int
, minute : Basics.Int
, second : Basics.Int
, millis : Basics.Int 
}

An absolute date stored as a record.

fromDateRecord : DateRecord -> String

Convert a DateRecord to a @da encoded string.

fromDateRecord
    { year = 2021
    , month = 8
    , day = 3
    , hour = 6
    , minute = 39
    , second = 55
    , millis = 356
    }
--> "~2021.8.3..6.39.55..05b2"

toDateRecord : String -> Result (List Parser.DeadEnd) DateRecord

Convert a @da encoded string to a DateRecord, failing on improperly formatted strings.

toDateRecord "~2021.8.3..6.39.55..05b2"
--> Ok
-->    { year = 2021
-->    , month = 8
-->    , day = 3
-->    , hour = 6
-->    , minute = 39
-->    , second = 55
-->    , millis = 356
-->    }

Posix Time

fromPosix : Time.Posix -> String

Convert a posix time to a @da encoded string.

import Time

Time.millisToPosix 1627948800000 |> fromPosix
--> "~2021.8.3"

toPosix : String -> Result (List Parser.DeadEnd) Time.Posix

Try to convert a @da encoded string to a posix time, failing on improperly formatted strings.

import Time

toPosix "~2021.8.3..8.25.00"
--> Ok (Time.millisToPosix 1627979100000)

Parsing

parseDateRecord : Parser DateRecord

Parses a @da encoded string into a DateRecord.

parsePosix : Parser Time.Posix

Parses a @da encoded string into a posix time.