core-data-0.3.3.1: lib/Core/Data/Format.hs
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE ImportQualifiedPost #-}
{-# OPTIONS_HADDOCK hide #-}
module Core.Data.Format where
import Data.Hourglass qualified as H (
TimeFormat (..),
TimeFormatElem (..),
TimeFormatString (..),
)
{- |
Format string describing full (nanosecond) precision ISO8601 time,
> 2014-07-31T23:09:35.274387019Z
-}
data ISO8601_Precise = ISO8601_Precise
instance H.TimeFormat ISO8601_Precise where
toFormat _ =
H.TimeFormatString
[ H.Format_Year
, H.Format_Text '-'
, H.Format_Month2
, H.Format_Text '-'
, H.Format_Day2
, H.Format_Text 'T'
, H.Format_Hour
, H.Format_Text ':'
, H.Format_Minute
, H.Format_Text ':'
, H.Format_Second
, H.Format_Text '.'
, H.Format_Precision 9
, H.Format_Text 'Z'
]
data ISO8601_Seconds = ISO8601_Seconds
instance H.TimeFormat ISO8601_Seconds where
toFormat _ =
H.TimeFormatString
[ H.Format_Year
, H.Format_Text '-'
, H.Format_Month2
, H.Format_Text '-'
, H.Format_Day2
, H.Format_Text 'T'
, H.Format_Hour
, H.Format_Text ':'
, H.Format_Minute
, H.Format_Text ':'
, H.Format_Second
, H.Format_Text 'Z'
]
data Posix_Precise = Posix_Precise
instance H.TimeFormat Posix_Precise where
toFormat _ =
H.TimeFormatString
[ H.Format_UnixSecond
, H.Format_Text '.'
, H.Format_MilliSecond
, H.Format_MicroSecond
, H.Format_NanoSecond
]
data Posix_Micro = Posix_Micro
instance H.TimeFormat Posix_Micro where
toFormat _ =
H.TimeFormatString
[ H.Format_UnixSecond
, H.Format_Text '.'
, H.Format_MilliSecond
, H.Format_MicroSecond
]
data Posix_Milli = Posix_Milli
instance H.TimeFormat Posix_Milli where
toFormat _ =
H.TimeFormatString
[ H.Format_UnixSecond
, H.Format_Text '.'
, H.Format_MilliSecond
]
data Posix_Seconds = Posix_Seconds
instance H.TimeFormat Posix_Seconds where
toFormat _ =
H.TimeFormatString
[ H.Format_UnixSecond
]