Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 使用当前日期初始化模型_Date_Time_Elm - Fatal编程技术网

Date 使用当前日期初始化模型

Date 使用当前日期初始化模型,date,time,elm,Date,Time,Elm,我正在尝试用当前日期初始化模型。我不想使用本机模块。我试着用任务和效果来做。我被我的getCurrentTime方法卡住了。最干净的方法是什么 import Time exposing ( Time ) import StartApp import Task import Effects exposing (Never) import Html exposing ( Html ) app = StartApp.start { init = init , view = vi

我正在尝试用当前日期初始化模型。我不想使用本机模块。我试着用任务和效果来做。我被我的
getCurrentTime
方法卡住了。最干净的方法是什么

import Time exposing ( Time )
import StartApp
import Task
import Effects exposing (Never)
import Html exposing ( Html )

app = 
  StartApp.start
    { init = init
    , view = view
    , update = update
    , inputs = []}

main = 
  app.html

port tasks : Signal (Task.Task Never ())
port tasks =
  app.tasks

type alias Model = 
    { clock : Time}

init : (Model, Effects.Effects Action)
init = ((Model  ), Effects.none)

type Action = ShowClock 

update : Action -> Model -> (Model, Effects.Effects Action)
update action model = 
  case action of
    ShowClock c -> 
      ({ model | clock = c}, Effects.none)

getCurrentTime : Effects.Effects Action
getCurrentTime =
  -- stuck here
  |> Task.map ShowClock
  |> Effects.task

view : Signal.Address Action -> Model -> Html
view address model =
  Signal.map Html.text model.clock

还可以将时间转换为“YYYY-MM-DD”格式的字符串。

如果我们只想在程序开始时传递初始值,我们可以使用端口:

因此,我们要将其添加到包含main的应用程序中:

…然后我们必须将以下内容添加到html中,以便为elm程序提供正确的初始值

var myapp = Elm.fullscreen(Elm.YourAppNameHere, 
                           {
                               time: Date.now()
                           });
elm语言网站上的互操作文档合理地涵盖了这一点,并链接到其他几个示例:


或者,您可以从Signal.Extra库中尝试
foldp'
,该库会更明确地公开初始值

您可以使用ELM软件包获取当前时间

首先,您需要下载它并在终端或Windows命令中使用以下命令更新elm-package.json文件:

elm-package install evancz/task-tutorial 1.0.3
然后更新您的代码:

getCurrentTime : Effects.Effects Action
getCurrentTime = Effects.task <| Task.map ShowClock ( TaskTutorial.getCurrentTime )

html部分让我感到困惑,因为我用ELM在view方法中编写html。我该怎么做?这个要点:从interop页面链接到,并解释如何在html中嵌入elm(全屏函数的行为类似于
embed
,只是它不需要目标元素,因为它将整个页面用作elm应用程序)我不想在html中嵌入elm。一定还有别的办法,我会继续找的。:)
getCurrentTime : Effects.Effects Action
getCurrentTime = Effects.task <| Task.map ShowClock ( TaskTutorial.getCurrentTime )
 toHRDate : Time -> String -- to human readable date
 toHRDate t =
     let
       date = Date.fromTime t
       d = toString (Date.day date) -- day
       m = toString (Date.month date) -- month
       y = toString (Date.year date) -- year
       hrd = d ++ "-" ++ m ++ "-" ++ y
    in hrd