mnt*_*123 2 time parsing haskell
我无法找到一个简单的例子(对不起我的谷歌技能)在哈斯克尔现场展示了如何使用该Data.Time功能来转换格式String到UTCTime,然后能够从加/减分/秒和转换回UTCTime至格式String。
我要寻找一个例子,说明如何转换String(例如像"10:20:30"到UTCTime,然后加1000秒,那个时候,怎么办使用此哈斯克尔Data.Time库,而完全不使用IO?
函数的类型应为FormatTime -> String -> UTCTime。
该函数应使用TimeLocale或FormatTime需要区域设置/格式。
库中有太多的函数,而且类型太多,以至于令人困惑。readTime,TimeLocale,ParseTime t,NominalDiffTime,Time,什么不是。
请不要仅指向Haskell网站上的文档。大多数文档都只是源代码中的类型签名转储,几乎没有任何示例。抱歉,这很糟糕,但是我花了很多时间试图从那些文档中找出一些东西。
将此与Python文档进行比较。这么多美丽的例子。谢天谢地,有。
import Data.Time
timeFormat = "%H:%M:%S"
understandTime = parseTimeOrError True defaultTimeLocale timeFormat
time :: UTCTime
time = understandTime "10:30:20"
Run Code Online (Sandbox Code Playgroud)
?> time
1970-01-01 10:30:20 UTC
Run Code Online (Sandbox Code Playgroud)
让我们分解一下正在发生的事情:
timeFormat 只是一个字符串,描述了我们期望时间如何传递给我们。parseTimeOrError,defaultTimeLocale用于语言环境,并且先前timeFormat针对预期格式进行了定义。understandTime,我们有了一个函数,该函数可能需要一段时间才能完成String。使用它时,我们需要将期望的输出类型显式设置为UTCTime(这是正确的time :: UTCTime)。如果我们要understandTime在已经期望a的函数的上下文中使用UTCTime,那将是不必要的(例如addUTCTime 1000 (understandTime "10:30:20"))time。请注意,年,日,月和时区默认为1970-01-01和UTC,因为我们没有在中显式读取它们timeFormat。