得到时间作为国际

jaj*_*doo 25 haskell

haskell中是否有一个函数用于纪元时间,以秒/毫秒为单位?

也许类似于java的东西

System.currentTimeMillis();
Run Code Online (Sandbox Code Playgroud)

编辑:as IntInteger

ДМИ*_*КОВ 35

是.

getCurrentTime :: IO UTCTime.

可以像下面Int那样检索UNIX纪元时间:

> :m + Data.Time System.Locale Control.Applicative
> epoch_int <- (read <$> formatTime defaultTimeLocale "%s" <$> getCurrentTime) :: IO Int
> epoch_int
1375025861
Run Code Online (Sandbox Code Playgroud)

UPD:正如其他用户注意到的那样,有更简单的方法:

> :m + Data.Time.Clock.POSIX
> round `fmap` getPOSIXTime 
1375040716
it :: Integer
Run Code Online (Sandbox Code Playgroud)

  • 因为这是一个"IO"不纯的操作.你不能说每个`getPOSIXTime`调用都会返回相同的值. (5认同)
  • 通过字符串转换?技术上正确,可能是安全的,但感觉非常混乱,比其他解决方案...... (4认同)

Blu*_*Ice 6

试试这个:

import Data.Time
import Data.Time.Clock.POSIX

t = getPOSIXTime
Run Code Online (Sandbox Code Playgroud)

它有6位小数的精度.

  • 多余的`Data.Time`导入.`t`是`IO POSIXTime`,问题是关于获得`Int`. (3认同)