如何使用GHCJS获取当前时间?

问题描述:

如何使用GHCJS获取当前时间?我应该尝试访问Date还是使用Haskell基本库? GHCJS基础库中是否有一个实用函数?如何使用GHCJS获取当前时间?

+0

Haskell的库似乎工作 - 任何理由不使用它们? – ondra

+0

我认为我没有找到使用它们的方法。你会在这里写一个关于你的想法的答案吗?我会尝试它,并将其标记为正确的答案,如果它能正常工作 – danza

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一个实例,因此,如果你是从未来的阅读此尝试一些更优雅!