Как отформатировать дату/время как ISO 8601 в Haskell

Я хотел бы конвертировать полную дату/время в формат ISO 8601 как JavaScript new Date().toISOString(), давая формат YYYY-MM-DDTHH:mm:ss.sssZ.

Я не могу найти базовую библиотечную функцию или пакет для этого.

Ответы

Ответ 1

Я не вижу никакой ранее существовавшей функции для этого, но вы можете легко сделать это с помощью Data.Time.Format.formatTime:

import System.Locale (defaultTimeLocale)
import Data.Time.Format (formatTime)

iso8601 :: UTCTime -> String
iso8601 = formatTime defaultTimeLocale "%FT%T%QZ"

(Вам нужно преобразовать время в UTCTime, прежде чем передавать его этой функции, чтобы он фактически отображал фактическое время UTC.)