-- Show the current time in your time zone. -- -- Read how it works: -- https://guide.elm-lang.org/effects/time.html -- -- For an analog clock, check out this SVG example: -- https://elm-lang.org/examples/clock -- import Browser import Html exposing (..) import Task import Time -- MAIN main = Browser.element { init = init , view = view , update = update , subscriptions = subscriptions } -- MODEL type alias Model = { zone : Time.Zone , time : Time.Posix } init : () -> (Model, Cmd Msg) init _ = ( Model Time.utc (Time.millisToPosix 0) , Task.perform AdjustTimeZone Time.here ) -- UPDATE type Msg = Tick Time.Posix | AdjustTimeZone Time.Zone update : Msg -> Model -> (Model, Cmd Msg) update msg model = case msg of Tick newTime -> ( { model | time = newTime } , Cmd.none ) AdjustTimeZone newZone -> ( { model | zone = newZone } , Cmd.none ) -- SUBSCRIPTIONS subscriptions : Model -> Sub Msg subscriptions model = Time.every 1000 Tick -- VIEW view : Model -> Html Msg view model = let hour = String.fromInt (Time.toHour model.zone model.time) minute = String.fromInt (Time.toMinute model.zone model.time) second = String.fromInt (Time.toSecond model.zone model.time) in h1 [] [ text (hour ++ ":" ++ minute ++ ":" ++ second) ]