我试图弄清楚如何在版本.17中获取elm中的当前日期。我看到他们在.17中添加了一个Date模块,但我还没有找到任何关于它如何使用的例子。有没有人想出怎么做?
编辑: 在试图改造这个解决方案时,我遇到了另一个绊脚石。我试图触发设置日期,然后调用另一个Msg来做其他事情。但是我仍然会{}获得约会。
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
}
答案 0 :(得分:4)
您需要来自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
}
答案 1 :(得分:2)
+1来自@SorenDebois的回答。你可以重构到目前为止。要么做一个
myDate = Date.fromTime timeFromMaybe
或者在代码中使用Date。下面是完整的例子(改编自其他答案)。
import Html.App as App
import Html exposing (..)
import Date exposing (Date)
import Task
type alias Model =
Maybe Date
type Msg =
SetDate (Maybe Date)
update : Msg -> Model -> (Model, Cmd Msg)
update (SetDate date) _ =
(date, Cmd.none)
view : Model -> Html Msg
view model =
div [] [ text <| "(Optional) date at program launch was " ++ dateString model ]
dateString : Model -> String
dateString model =
case model of
Nothing -> "No date here"
Just date ->
"the date is "
++ (toString <| Date.dayOfWeek date)
++ " "
++ (toString <| Date.day date)
++ " "
++ (toString <| Date.month date)
++ " "
++ (toString <| Date.year date)
now : Cmd Msg
now =
Task.perform (Just >> SetDate) Date.now
main : Program Never
main =
App.program
{ init = ( Nothing, now )
, view = view
, subscriptions = always Sub.none
, update = update
}