我希望将完整的日期/时间转换为ISO 8601格式 类似于JavaScript中的new Date(). toISOString()
, 给出一个YYYY-MM-DDTHH:mm:ss.sssZ
格式。
我无法找到一个基础库函数或包来执行此操作。
我希望将完整的日期/时间转换为ISO 8601格式 类似于JavaScript中的new Date(). toISOString()
, 给出一个YYYY-MM-DDTHH:mm:ss.sssZ
格式。
我无法找到一个基础库函数或包来执行此操作。
我没有看到任何预设函数可以做到这一点,但是你可以轻松地使用 Data.Time.Format.formatTime
来创建一个:
import System.Locale (defaultTimeLocale)
import Data.Time.Format (formatTime)
iso8601 :: UTCTime -> String
iso8601 = formatTime defaultTimeLocale "%FT%T%QZ"
在将时间传递到此函数之前,您需要将其转换为 UTCTime
,以便它实际上显示实际的UTC时间。
iso8601 t = take 23 (formatTime defaultTimeLocale "%FT%T%Q" t) ++ "Z"
就可以了(在 the aeson source code 中找到)。 - nh2parseTimestamp = parseTimeOrError False defaultTimeLocale "%FT%T%QZ"
。 - Mikkelaeson
中出现错误的情况。%F
将999年格式化为“999”,而不是ISO 8601所需的“0999”。 - nh2
UTCTime
或ZonedTime
。 - nh2