如何通过GHCJS获取当前时间?

时间:2015-11-06 22:41:20

标签: ghcjs

如何通过GHCJS获取当前时间?我应该尝试访问Date还是使用Haskell基础库? GHCJS基础库中某处有实用功能吗?

2 个答案:

答案 0 :(得分:4)

Data.Time.Clock模块似乎运作良好:

import Data.Time.Clock (getCurrentTime)
import Data.Time.Format -- Show instance
main = do
  now <- getCurrentTime
  print now

答案 1 :(得分:0)

我目前发现的解决方案非常难看,但它对我有用,所以也许它可以节省一些时间给某人:

{-# LANGUAGE JavaScriptFFI #-}

import GHCJS.Types( JSVal )
import GHCJS.Prim( fromJSString )

foreign import javascript unsafe "Date.now()+''" dateNow :: IO (JSVal)

asInteger = read (fromJSString dateNow) :: Integer -- this happens in IO

丑陋来自于未在GHCJS中找到JSInteger类型,为了获得Date.now()的结果,需要这是一个长整数。所以我需要在Javascript中生成一个字符串,将字符串连接到Date.now()的结果。此时我可以获得JSString结果,但这不是Read的实例,因此使用read将无效。我得到JSValue并使用String将其转换为fromJSString

最终GHCJS中可能有JSInteger,或者JSString可能会成为Read的一个实例,所以如果您从未来开始阅读此内容,请尝试更优雅的内容!