mirror of
https://github.com/correl/elm.git
synced 2024-11-16 11:09:29 +00:00
121 lines
2.2 KiB
Text
121 lines
2.2 KiB
Text
module Gigasecond exposing (add)
|
|
|
|
import Date
|
|
import Time
|
|
import String
|
|
|
|
|
|
add : String -> Result String String
|
|
add x =
|
|
x
|
|
|> Date.fromString
|
|
|> Result.map (add' gigasecond)
|
|
|> Result.map format
|
|
|
|
|
|
add' : Time.Time -> Date.Date -> Date.Date
|
|
add' t d =
|
|
d
|
|
|> Date.toTime
|
|
|> flip (+) t
|
|
|> Date.fromTime
|
|
|
|
|
|
gigasecond : Time.Time
|
|
gigasecond =
|
|
10 ^ 12
|
|
|
|
|
|
format : Date.Date -> String
|
|
format date =
|
|
let
|
|
date =
|
|
toGMT date
|
|
in
|
|
--toString date
|
|
[ Date.year date
|
|
|> toString
|
|
, "-"
|
|
, Date.month date
|
|
|> monthToInt
|
|
|> Maybe.withDefault 1
|
|
|> toString
|
|
|> String.pad 2 '0'
|
|
, "-"
|
|
, Date.day date
|
|
|> toString
|
|
|> String.pad 2 '0'
|
|
, "T"
|
|
, Date.hour date
|
|
|> toString
|
|
|> String.pad 2 '0'
|
|
, ":"
|
|
, Date.minute date
|
|
|> toString
|
|
|> String.pad 2 '0'
|
|
, ":"
|
|
, Date.second date
|
|
|> toString
|
|
|> String.pad 2 '0'
|
|
]
|
|
|> String.concat
|
|
|
|
|
|
monthToInt : Date.Month -> Maybe Int
|
|
monthToInt n =
|
|
case n of
|
|
Date.Jan ->
|
|
Just 1
|
|
|
|
Date.Feb ->
|
|
Just 2
|
|
|
|
Date.Mar ->
|
|
Just 3
|
|
|
|
Date.Apr ->
|
|
Just 4
|
|
|
|
Date.May ->
|
|
Just 5
|
|
|
|
Date.Jun ->
|
|
Just 6
|
|
|
|
Date.Jul ->
|
|
Just 7
|
|
|
|
Date.Aug ->
|
|
Just 8
|
|
|
|
Date.Sep ->
|
|
Just 9
|
|
|
|
Date.Oct ->
|
|
Just 10
|
|
|
|
Date.Nov ->
|
|
Just 11
|
|
|
|
Date.Dec ->
|
|
Just 12
|
|
|
|
|
|
toGMT : Date.Date -> Date.Date
|
|
toGMT date =
|
|
let
|
|
tzOffset =
|
|
date
|
|
|> toString
|
|
|> String.split " "
|
|
|> List.drop 5
|
|
|> List.head
|
|
|> Maybe.withDefault "GMT-0000"
|
|
|> String.dropLeft 3
|
|
|> String.toInt
|
|
|> Result.withDefault 0
|
|
|> flip (//) 100
|
|
|> toFloat
|
|
|> (*) -Time.hour
|
|
in
|
|
add' tzOffset date
|