Files
docspell/modules/webapp/src/main/elm/Util/Time.elm
2019-12-29 21:55:12 +01:00

108 lines
2.2 KiB
Elm

module Util.Time exposing
( formatDate
, formatDateShort
, formatDateTime
, formatIsoDateTime
)
import DateFormat
import Time exposing (Posix, Zone, utc)
dateFormatter : Zone -> Posix -> String
dateFormatter =
DateFormat.format
[ DateFormat.dayOfWeekNameAbbreviated
, DateFormat.text ", "
, DateFormat.monthNameFull
, DateFormat.text " "
, DateFormat.dayOfMonthSuffix
, DateFormat.text ", "
, DateFormat.yearNumber
]
dateFormatterShort : Zone -> Posix -> String
dateFormatterShort =
DateFormat.format
[ DateFormat.yearNumber
, DateFormat.text "/"
, DateFormat.monthFixed
, DateFormat.text "/"
, DateFormat.dayOfMonthFixed
]
timeFormatter : Zone -> Posix -> String
timeFormatter =
DateFormat.format
[ DateFormat.hourMilitaryNumber
, DateFormat.text ":"
, DateFormat.minuteFixed
]
isoDateTimeFormatter : Zone -> Posix -> String
isoDateTimeFormatter =
DateFormat.format
[ DateFormat.yearNumber
, DateFormat.text "-"
, DateFormat.monthFixed
, DateFormat.text "-"
, DateFormat.dayOfMonthFixed
, DateFormat.text "T"
, DateFormat.hourMilitaryNumber
, DateFormat.text ":"
, DateFormat.minuteFixed
, DateFormat.text ":"
, DateFormat.secondFixed
]
timeZone : Zone
timeZone =
utc
{- Format millis into "Wed, 10. Jan 2018, 18:57" -}
formatDateTime : Int -> String
formatDateTime millis =
formatDate millis ++ ", " ++ formatTime millis
formatIsoDateTime : Int -> String
formatIsoDateTime millis =
Time.millisToPosix millis
|> isoDateTimeFormatter timeZone
{- Format millis into "18:57". The current time (not the duration of
the millis).
-}
formatTime : Int -> String
formatTime millis =
Time.millisToPosix millis
|> timeFormatter timeZone
{- Format millis into "Wed, 10. Jan 2018" -}
formatDate : Int -> String
formatDate millis =
Time.millisToPosix millis
|> dateFormatter timeZone
formatDateShort : Int -> String
formatDateShort millis =
Time.millisToPosix millis
|> dateFormatterShort timeZone