如何获取 elm 中的当前日期?

Kor*_*bin 3 elm

我试图弄清楚如何在版本 .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)

Sør*_*ois 6

您将需要Timenow任务或订阅。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)

  • 我试图获取当前日期。使用您的示例,我将所有对时间的引用替换为日期,并返回 {}。我认为移植到 js 来获取它可能会更容易。 (2认同)