Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to format UTCTime as ISO 8601 in Haskell

I would like to convert a full date/time to ISO 8601 format like JavaScript's new Date().toISOString() does, giving a YYYY-MM-DDTHH:mm:ss.sssZ format.

I cannot find a base library function or package to do this.

like image 361
nh2 Avatar asked Oct 26 '13 23:10

nh2


2 Answers

I don't see any pre-existing function for doing this, but you can make one easily using Data.Time.Format.formatTime:

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

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

(You need to convert the time to a UTCTime before passing it to this function in order for it to actually display the actual UTC time.)

like image 172
jwodder Avatar answered Sep 20 '22 07:09

jwodder


The time library in version 1.9 added this functionality (docs):

iso8601Show :: ISO8601 t => t -> String

and UTCTime has a ISO8601 instance.

like image 25
nh2 Avatar answered Sep 22 '22 07:09

nh2