{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Chrono.Formats
(
ISO8601_Precise(..)
, ISO8601_Seconds(..)
, ISO8601_Days(..)
, Posix_Precise(..)
, Posix_Micro(..)
, Posix_Milli(..)
, Posix_Seconds(..)
) where
import Data.Hourglass
data ISO8601_Precise = ISO8601_Precise
instance TimeFormat ISO8601_Precise where
toFormat _ = TimeFormatString
[ Format_Year
, Format_Text '-'
, Format_Month2
, Format_Text '-'
, Format_Day2
, Format_Text 'T'
, Format_Hour
, Format_Text ':'
, Format_Minute
, Format_Text ':'
, Format_Second
, Format_Text '.'
, Format_Precision 9
, Format_Text 'Z'
]
data ISO8601_Seconds = ISO8601_Seconds
instance TimeFormat ISO8601_Seconds where
toFormat _ = TimeFormatString
[ Format_Year
, Format_Text '-'
, Format_Month2
, Format_Text '-'
, Format_Day2
, Format_Text 'T'
, Format_Hour
, Format_Text ':'
, Format_Minute
, Format_Text ':'
, Format_Second
, Format_Text 'Z'
]
data ISO8601_Days = ISO8601_Days
instance TimeFormat ISO8601_Days where
toFormat _ = TimeFormatString
[ Format_Year
, Format_Text '-'
, Format_Month2
, Format_Text '-'
, Format_Day2
]
data Posix_Precise = Posix_Precise
instance TimeFormat Posix_Precise where
toFormat _ = TimeFormatString
[ Format_UnixSecond
, Format_Text '.'
, Format_MilliSecond
, Format_MicroSecond
, Format_NanoSecond
]
data Posix_Micro = Posix_Micro
instance TimeFormat Posix_Micro where
toFormat _ = TimeFormatString
[ Format_UnixSecond
, Format_Text '.'
, Format_MilliSecond
, Format_MicroSecond
]
data Posix_Milli = Posix_Milli
instance TimeFormat Posix_Milli where
toFormat _ = TimeFormatString
[ Format_UnixSecond
, Format_Text '.'
, Format_MilliSecond
]
data Posix_Seconds = Posix_Seconds
instance TimeFormat Posix_Seconds where
toFormat _ = TimeFormatString
[ Format_UnixSecond
]