如何使用 GHCJS 获取当前时间?
How to get the current time with GHCJS?
如何用GHCJS获取当前时间?我应该尝试访问 Date
还是使用 Haskell 基础库? GHCJS 基础库中是否有实用函数?
我目前找到的解决方案非常丑陋,但它对我有用,所以也许它可以为某人节省一些时间:
{-# 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
的一个实例,所以如果您将来阅读本文,请尝试更优雅的内容!
Data.Time.Clock
模块似乎运行良好:
import Data.Time.Clock (getCurrentTime)
import Data.Time.Format -- Show instance
main = do
now <- getCurrentTime
print now
如何用GHCJS获取当前时间?我应该尝试访问 Date
还是使用 Haskell 基础库? GHCJS 基础库中是否有实用函数?
我目前找到的解决方案非常丑陋,但它对我有用,所以也许它可以为某人节省一些时间:
{-# 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
的一个实例,所以如果您将来阅读本文,请尝试更优雅的内容!
Data.Time.Clock
模块似乎运行良好:
import Data.Time.Clock (getCurrentTime)
import Data.Time.Format -- Show instance
main = do
now <- getCurrentTime
print now