gpt4 book ai didi

parsing - 如何从Haskell中的字符串解析UTCTime类型的时间值?

转载 作者:行者123 更新时间:2023-12-04 23:40:11 26 4
gpt4 key购买 nike

这是 the one I asked 的后续问题就在不久前。

我在 Haskell 网站上找不到显示如何使用 Data.Time 的单个示例(对不起,我的 Google 技能)。转换格式的函数StringUTCTime然后能够从中添加/减去分钟/秒并转换回UTCTime格式化 String .

我正在寻找一个显示如何转换 String 的示例(例如,像 "10:20:30"UTCTime,然后在该时间上增加 1000 秒。如何在不使用 IO 的情况下使用 Data.Time 库来执行此 Haskell?

函数的类型应该是FormatTime -> String -> UTCTime .

该函数应使用 TimeLocaleFormatTime因为需要语言环境/格式。

库中的函数如此之多,类型如此之多,以至于令人费解。 readTime , TimeLocale , ParseTime t , NominalDiffTime , Time什么不是。

请不要只指向 the Haskell site 上的文档.大多数文档只是源代码中的类型签名转储,几乎没有任何示例。对不起,如果这是咆哮,但我花了很多时间试图从这些文档中找出一些东西。

将此与 Python docs 进行比较准时。这么多美丽的例子。
感谢上帝,有SO。

最佳答案

import Data.Time

timeFormat = "%H:%M:%S"
understandTime = parseTimeOrError True defaultTimeLocale timeFormat

time :: UTCTime
time = understandTime "10:30:20"
λ> time
1970-01-01 10:30:20 UTC

让我们分解发生了什么:
  • timeFormat只是一个字符串,描述了我们期望如何将时间传递给我们。
  • 我们部分申请 parseTimeOrError , 使用 defaultTimeLocale 对于语言环境,之前定义的 timeFormat对于预期的格式。
  • 我们现在有一个 understandTime函数,它可能需要一段时间作为 String .使用时,我们需要显式设置期望的输出类型为UTCTime (这就是 time :: UTCTime 所做的)。如果我们使用 understandTime在已经期望 UTCTime 的函数的上下文中,这将是不必要的(例如 addUTCTime 1000 (understandTime "10:30:20") )
  • 我们回来了time .请注意,年、日、月和时区默认为 1970-01-01 和 UTC,因为我们没有在 timeFormat 中明确读取它们。 .
  • 关于parsing - 如何从Haskell中的字符串解析UTCTime类型的时间值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39818213/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com