Отримання поточної дати

Elm:
Отримання поточної дати

How to: (Як зробити:)

import Browser
import Html exposing (Html, text)
import Task

type Msg = GotTime Posix

type alias Model = Posix

init : () -> (Model, Cmd Msg)
init _ =
    (Posix.fromMillis 0, Task.perform GotTime Time.now)

update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
    case msg of
        GotTime newTime ->
            (newTime, Cmd.none)

view : Model -> Html Msg
view model =
    text (String.fromInt (Posix.toMillis model))

main =
    Browser.element
        { init = init
        , view = view
        , update = update
        , subscriptions = \_ -> Sub.none
        }

Sample output:

1617632023765

Deep Dive (Поглиблений Огляд)

Elm має чітку архітектуру, яка розділяє логіку отримання часу та відображення його у в’ю. Історично, Elm зазнав великих змін у версіях 0.17 та 0.18, спростивши роботу зі сторонніми бібліотеками JS та забезпечивши сильнішу систему типів. Для отримання часу Elm використовує власний тип Posix, який репрезентує точку часу в UTC. Альтернативою може бути передача часу з сервера для синхронізації, особливо важливо це, коли точність критична і можуть бути проблеми з часовими зонами.

See Also (Детальніше)