我正在运行elm-repl来玩这种语言.
我想看看现在的时间.我该怎么办?当前库似乎不可能.这是为什么?
编辑:我做了一个包来帮助解决这个问题.http://package.elm-lang.org/packages/z5h/time-app
这被问到榆树0.15左右 - 榆树0.17和0.18的情况有所不同:请参阅如何获得榆树当前时间0.17/0.18?
Sim*_*n H 17
更新0.18这再次变得更简单.现在您只需要一个命令和Msg来处理结果
type Msg
= OnTime Time.Posix
getTime : Cmd Msg
getTime =
Task.perform OnTime Time.now
Run Code Online (Sandbox Code Playgroud)
看到这个艾莉
原始答案
0.17,这使得更容易.时间库中现在有一个任务.例如,我们现在有:
type Msg
= OnTime Time
getTime : Cmd Msg
getTime =
Task.perform OnTime Time.now
Run Code Online (Sandbox Code Playgroud)
pdo*_*926 11
这是一个人为的例子,它使用了两个:
import Signal
import Time exposing (every, second)
import Date exposing (year, hour, minute, second, fromTime)
import Graphics.Element exposing (show)
main =
Signal.map currentTime (Time.every Time.second)
currentTime t =
let date' = fromTime t
hour' = toString (Date.hour date')
minute' = toString (Date.minute date')
second' = toString (Date.second date')
year' = toString (year date')
now = "The current time is: " ++ hour' ++ ":" ++ minute' ++ ":" ++ second'
in
show now
Run Code Online (Sandbox Code Playgroud)
为了解决我自己的问题,我创建了一个StartApp变体,其中包含每个操作的时间戳.
所以更新功能有签名:
update : action -> Time -> model -> (model, Effects action)
要点就在这里. https://gist.github.com/z5h/41ca436679591b6c3e51
榆木0.19
在下面,我将初始时间设置为unix时间开始Time.millisToPosix 0,但是您可以将其设置为Nothing,以后再设置为Just time或将其传递给Flag。
module Main exposing (main)
import Browser
import Html exposing (Html)
import Task
import Time exposing (Posix)
main : Program () Model Msg
main =
Browser.element
{ init = \_ -> init
, view = view
, update = update
, subscriptions = \_ -> Sub.none
}
-- MODEL
type alias Model =
{ zone : Time.Zone
, now : Posix
}
init : ( Model, Cmd Msg )
init =
( Model Time.utc (Time.millisToPosix 0), Task.perform Zone Time.here )
-- UPDATE
type Msg
= Zone Time.Zone
| Now Posix
update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
case msg of
Zone zone ->
( { model | zone = zone }, Task.perform Now Time.now )
Now now ->
( { model | now = now }, Cmd.none )
-- VIEW
formatTime zone posix =
(String.padLeft 2 '0' <| String.fromInt <| Time.toHour zone posix)
++ ":"
++ (String.padLeft 2 '0' <| String.fromInt <| Time.toMinute zone posix)
++ ":"
++ (String.padLeft 2 '0' <| String.fromInt <| Time.toSecond zone posix)
view : Model -> Html Msg
view model =
Html.div []
[ Html.text <| formatTime model.zone model.now
]
Run Code Online (Sandbox Code Playgroud)
如果您想要从程序启动开始的时间,您可以执行以下操作:
Now.elm
module Now where
import Native.Now
loadTime : Float
loadTime = Native.Now.loadTime
Run Code Online (Sandbox Code Playgroud)
本地/ Now.js
Elm.Native.Now = {};
Elm.Native.Now.make = function(localRuntime) {
localRuntime.Native = localRuntime.Native || {};
localRuntime.Native.Now = localRuntime.Native.Now || {};
if (localRuntime.Native.Now.values) {
return localRuntime.Native.Now.values;
}
var Result = Elm.Result.make(localRuntime);
return localRuntime.Native.Now.values = {
loadTime: (new window.Date).getTime()
};
};
Run Code Online (Sandbox Code Playgroud)
你的代码
programStart = Now.loadTime
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9597 次 |
| 最近记录: |