如何通过GHCJS获取当前时间?我应该尝试访问Date
还是使用Haskell基础库? GHCJS基础库中某处有实用功能吗?
答案 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
的一个实例,所以如果您从未来开始阅读此内容,请尝试更优雅的内容!