我试图弄清楚如何在版本 .17 中获取 elm 中的当前日期。我看到他们在 .17 中添加了一个 Date 模块,但我还没有找到任何关于如何使用它的示例。有谁知道如何做到这一点?
编辑:在尝试改进这个解决方案时,我遇到了另一个绊脚石。我正在尝试触发设置日期,然后调用另一个消息来执行其他操作。但我仍然收到 {} 约会。
import Html.App as App
import Html exposing (..)
import Time exposing (Time)
import Task
import Date exposing (Date)
import Html.Events exposing (onClick)
import Html.Attributes exposing (..)
type alias Model =
{currentDate : Maybe Date}
type Msg =
SetDate (Maybe Date)
| TriggerDateSet
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
case msg of
SetDate date ->
({model | currentDate = date}, Cmd.none)
TriggerDateSet ->
(model, now)
view : Model -> Html Msg
view model =
div []
[ div []
[ button [onClick TriggerDateSet] [] ]
, div [] [ text <| "(Optional) time at program launch was " ++ toString model ]
]
now : Cmd Msg
now =
Task.perform (always (SetDate Nothing)) (Just >> SetDate) Date.now
main : Program Never
main =
App.program
{ init = ( Model Nothing, now )
, view = view
, subscriptions = always Sub.none
, update = update
}
Run Code Online (Sandbox Code Playgroud)
您将需要Time的now任务或订阅。every
这是使用前者用当前时间初始化模型的示例。
import Html.App as App
import Html exposing (..)
import Time exposing (Time)
import Task
type alias Model =
Maybe Time
type Msg =
SetTime (Maybe Time)
update : Msg -> Model -> (Model, Cmd Msg)
update (SetTime time) _ =
(time, Cmd.none)
view : Model -> Html Msg
view model =
div [] [ text <| "(Optional) time at program launch was " ++ toString model ]
now : Cmd Msg
now =
Task.perform (Just >> SetTime) Time.now
main : Program Never
main =
App.program
{ init = ( Nothing, now )
, view = view
, subscriptions = always Sub.none
, update = update
}
Run Code Online (Sandbox Code Playgroud)