date - 更正格式字符串以在 Haskell 中解析日期时间
问题描述
我正在尝试解析一个datetime
使用 Haskell 的Date.Time
包,但我似乎没有正确的格式。
以下是我尝试解析的一些日期示例:
2015-01-01T01:00:00.000Z
2015-01-11T03:00:00.000Z
2015-01-11T03:00:00.000Z
我有一个类似的功能:
parseStringToDateTime :: String -> UTCTime
parseStringToDateTime = parseTimeOrError False defaultTimeLocale "%Y-%m-%d %HH:%MM:%SS"
但这不太正确,我得到一个运行时错误。
datetime
解析这样的正确格式字符串是什么?
解决方案
使用 time-1.9.3 我设法像这样格式化您的日期时间字符串:
λ> import Date.Time
λ> import Data.Time.Format.ISO8601 -- I think it's Date.Time.Format in newer versions
λ> formatParseM (iso8601Format @UTCTime) "2015-01-11T03:00:00.000Z" >>= print
2015-01-11 03:00:00 UTC
现在我们可以parseTimeOrError
为您的用例复制:
λ> parseStringToDateTime s = maybe (error $ "bad date-time string " ++ s) id $ formatParseM (iso8601Format @UTCTime) s
λ> parseStringToDateTime "2015-01-11T03:00:00.000Z"
2015-01-11 03:00:00 UTC
λ> parseStringToDateTime "BAD"
*** Exception: bad date-time string BAD
推荐阅读
- r - 可以使用“sprintf”功能更改列的格式吗?
- php - PayPal API 购物车和 Webhooks?
- r - 访问通过模块创建的数据框及其名称并将它们存储在列表中
- r - 我在 R 中的 performanceAnalytics 包中的 performanceSummary 图表有问题
- javascript - 如何通过模拟选择器和/或 redux store 来编写 Redux Saga 测试
- docker - 当有多个摘要的标签时,docker pull 如何工作(用于 os/arch)
- java - 从 python 服务器发送到 java 客户端的定时数据
- sql - 列出 SQL Server 中的数据库并跳过 master
- .net - 以编程方式修复“Word 在损坏的...中发现不可读的内容”
- java - 将此字符串转换为字符串数组的最佳方法是什么?