如何使用GHCJS获取当前时间?
答
的Data.Time.Clock
模块似乎运作良好:
import Data.Time.Clock (getCurrentTime)
import Data.Time.Format -- Show instance
main = do
now <- getCurrentTime
print now
+0
是的,这可以工作,而且它更干净,谢谢!这引入了对“时间”的依赖 – danza
答
我目前找到的解决方案是相当难看,但它为我工作,所以也许它可以一段时间保存到某人:
{-# 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
并使用fromJSString
将其转换为String
。
最终可能会有一个GHCJS JSInteger
,或JSString
可能成为Read
一个实例,因此,如果你是从未来的阅读此尝试一些更优雅!
Haskell的库似乎工作 - 任何理由不使用它们? – ondra
我认为我没有找到使用它们的方法。你会在这里写一个关于你的想法的答案吗?我会尝试它,并将其标记为正确的答案,如果它能正常工作 – danza