{-# LANGUAGE Safe #-}moduleData.Time.Format.Parse.Class(-- * ParsingParseNumericPadding (..),ParseTime (..),parseSpecifiers ,timeSubstituteTimeSpecifier ,timeParseTimeSpecifier ,durationParseTimeSpecifier ,)whereimportData.CharimportData.MaybeimportData.ProxyimportData.Time.Format.Locale importText.ParserCombinators.ReadPdataParseNumericPadding =NoPadding |SpacePadding |ZeroPadding -- | The class of types which can be parsed given a UNIX-style time format-- string.classParseTime t where-- | @since 1.9.1substituteTimeSpecifier ::Proxyt ->TimeLocale ->Char->MaybeStringsubstituteTimeSpecifier Proxy t
_TimeLocale
_Char
_=Maybe String
forall a. Maybe a
Nothing-- | Get the string corresponding to the given format specifier.---- @since 1.9.1parseTimeSpecifier ::Proxyt ->TimeLocale ->MaybeParseNumericPadding ->Char->ReadPString-- | Builds a time value from a parsed input string.-- If the input does not include all the information needed to-- construct a complete value, any missing parts should be taken-- from 1970年01月01日 00:00:00 +0000 (which was a Thursday).-- In the absence of @%C@ or @%Y@, century is 1969 - 2068.---- @since 1.9.1buildTime ::-- | The time locale.TimeLocale ->-- | Pairs of format characters and the-- corresponding part of the input.[(Char,String)]->Maybet -- | Case-insensitive version of 'Text.ParserCombinators.ReadP.char'.charCI ::Char->ReadPCharcharCI :: Char -> ReadP Char
charCI Char
c =(Char -> Bool) -> ReadP Char
satisfy(\Char
x ->Char -> Char
toUpperChar
c Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
==Char -> Char
toUpperChar
x )-- | Case-insensitive version of 'Text.ParserCombinators.ReadP.string'.stringCI ::String->ReadPStringstringCI :: String -> ReadP String
stringCI String
this =doletscan :: String -> String -> ReadP String
scan []String
_=String -> ReadP String
forall (m :: * -> *) a. Monad m => a -> m a
returnString
this scan (Char
x :String
xs )(Char
y :String
ys )|Char -> Char
toUpperChar
x Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
==Char -> Char
toUpperChar
y =doChar
_<-ReadP Char
getString -> String -> ReadP String
scan String
xs String
ys scan String
_String
_=ReadP String
forall a. ReadP a
pfailString
s <-ReadP String
lookString -> String -> ReadP String
scan String
this String
s parseSpecifiers ::ParseTime t =>Proxyt ->TimeLocale ->String->ReadP[(Char,String)]parseSpecifiers :: Proxy t -> TimeLocale -> String -> ReadP [(Char, String)]
parseSpecifiers Proxy t
pt TimeLocale
locale =letparse ::String->ReadP[(Char,String)]parse :: String -> ReadP [(Char, String)]
parse []=[(Char, String)] -> ReadP [(Char, String)]
forall (m :: * -> *) a. Monad m => a -> m a
return[]parse (Char
'%':String
cs )=String -> ReadP [(Char, String)]
parse1 String
cs parse (Char
c :String
cs )|Char -> Bool
isSpaceChar
c =doChar
_<-(Char -> Bool) -> ReadP Char
satisfyChar -> Bool
isSpacecaseString
cs of(Char
c' :String
_)|Char -> Bool
isSpaceChar
c' ->() -> ReadP ()
forall (m :: * -> *) a. Monad m => a -> m a
return()String
_->ReadP ()
skipSpacesString -> ReadP [(Char, String)]
parse String
cs parse (Char
c :String
cs )=doChar
_<-Char -> ReadP Char
charCI Char
c String -> ReadP [(Char, String)]
parse String
cs parse1 ::String->ReadP[(Char,String)]parse1 :: String -> ReadP [(Char, String)]
parse1 (Char
'-':String
cs )=Maybe ParseNumericPadding -> String -> ReadP [(Char, String)]
parse2 (ParseNumericPadding -> Maybe ParseNumericPadding
forall a. a -> Maybe a
JustParseNumericPadding
NoPadding )String
cs parse1 (Char
'_':String
cs )=Maybe ParseNumericPadding -> String -> ReadP [(Char, String)]
parse2 (ParseNumericPadding -> Maybe ParseNumericPadding
forall a. a -> Maybe a
JustParseNumericPadding
SpacePadding )String
cs parse1 (Char
'0':String
cs )=Maybe ParseNumericPadding -> String -> ReadP [(Char, String)]
parse2 (ParseNumericPadding -> Maybe ParseNumericPadding
forall a. a -> Maybe a
JustParseNumericPadding
ZeroPadding )String
cs parse1 String
cs =Maybe ParseNumericPadding -> String -> ReadP [(Char, String)]
parse2 Maybe ParseNumericPadding
forall a. Maybe a
NothingString
cs parse2 ::MaybeParseNumericPadding ->String->ReadP[(Char,String)]parse2 :: Maybe ParseNumericPadding -> String -> ReadP [(Char, String)]
parse2 Maybe ParseNumericPadding
mpad (Char
'E':String
cs )=Maybe ParseNumericPadding
-> Bool -> String -> ReadP [(Char, String)]
parse3 Maybe ParseNumericPadding
mpad Bool
TrueString
cs parse2 Maybe ParseNumericPadding
mpad String
cs =Maybe ParseNumericPadding
-> Bool -> String -> ReadP [(Char, String)]
parse3 Maybe ParseNumericPadding
mpad Bool
FalseString
cs parse3 ::MaybeParseNumericPadding ->Bool->String->ReadP[(Char,String)]parse3 :: Maybe ParseNumericPadding
-> Bool -> String -> ReadP [(Char, String)]
parse3 Maybe ParseNumericPadding
_Bool
_(Char
'%':String
cs )=doChar
_<-Char -> ReadP Char
charChar
'%'String -> ReadP [(Char, String)]
parse String
cs parse3 Maybe ParseNumericPadding
_Bool
_(Char
c :String
cs )|JustString
s <-Proxy t -> TimeLocale -> Char -> Maybe String
forall t.
ParseTime t =>
Proxy t -> TimeLocale -> Char -> Maybe String
substituteTimeSpecifier Proxy t
pt TimeLocale
locale Char
c =String -> ReadP [(Char, String)]
parse (String -> ReadP [(Char, String)])
-> String -> ReadP [(Char, String)]
forall a b. (a -> b) -> a -> b
$String
s String -> String -> String
forall a. [a] -> [a] -> [a]
++String
cs parse3 Maybe ParseNumericPadding
mpad Bool
_alt (Char
c :String
cs )=doString
str <-Proxy t
-> TimeLocale -> Maybe ParseNumericPadding -> Char -> ReadP String
forall t.
ParseTime t =>
Proxy t
-> TimeLocale -> Maybe ParseNumericPadding -> Char -> ReadP String
parseTimeSpecifier Proxy t
pt TimeLocale
locale Maybe ParseNumericPadding
mpad Char
c [(Char, String)]
specs <-String -> ReadP [(Char, String)]
parse String
cs [(Char, String)] -> ReadP [(Char, String)]
forall (m :: * -> *) a. Monad m => a -> m a
return([(Char, String)] -> ReadP [(Char, String)])
-> [(Char, String)] -> ReadP [(Char, String)]
forall a b. (a -> b) -> a -> b
$(Char
c ,String
str )(Char, String) -> [(Char, String)] -> [(Char, String)]
forall a. a -> [a] -> [a]
:[(Char, String)]
specs parse3 Maybe ParseNumericPadding
_Bool
_[]=[(Char, String)] -> ReadP [(Char, String)]
forall (m :: * -> *) a. Monad m => a -> m a
return[]inString -> ReadP [(Char, String)]
parse dataPaddingSide =PrePadding |PostPadding allowEmptyParser ::Bool->ReadPStringallowEmptyParser :: Bool -> ReadP String
allowEmptyParser Bool
False=ReadP Char -> ReadP String
forall a. ReadP a -> ReadP [a]
many1((Char -> Bool) -> ReadP Char
satisfyChar -> Bool
isDigit)allowEmptyParser Bool
True=ReadP Char -> ReadP String
forall a. ReadP a -> ReadP [a]
many((Char -> Bool) -> ReadP Char
satisfyChar -> Bool
isDigit)parsePaddedDigits ::PaddingSide ->ParseNumericPadding ->Bool->Int->ReadPStringparsePaddedDigits :: PaddingSide -> ParseNumericPadding -> Bool -> Int -> ReadP String
parsePaddedDigits PaddingSide
_ParseNumericPadding
ZeroPadding Bool
_Int
n =Int -> ReadP Char -> ReadP String
forall a. Int -> ReadP a -> ReadP [a]
countInt
n ((Char -> Bool) -> ReadP Char
satisfyChar -> Bool
isDigit)parsePaddedDigits PaddingSide
PrePadding ParseNumericPadding
SpacePadding Bool
allowEmpty Int
_n =ReadP ()
skipSpacesReadP () -> ReadP String -> ReadP String
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>Bool -> ReadP String
allowEmptyParser Bool
allowEmpty parsePaddedDigits PaddingSide
PostPadding ParseNumericPadding
SpacePadding Bool
allowEmpty Int
_n =doString
r <-Bool -> ReadP String
allowEmptyParser Bool
allowEmpty ReadP ()
skipSpacesString -> ReadP String
forall (m :: * -> *) a. Monad m => a -> m a
returnString
r parsePaddedDigits PaddingSide
_ParseNumericPadding
NoPadding Bool
FalseInt
_n =ReadP Char -> ReadP String
forall a. ReadP a -> ReadP [a]
many1((Char -> Bool) -> ReadP Char
satisfyChar -> Bool
isDigit)parsePaddedDigits PaddingSide
_ParseNumericPadding
NoPadding Bool
TrueInt
_n =ReadP Char -> ReadP String
forall a. ReadP a -> ReadP [a]
many((Char -> Bool) -> ReadP Char
satisfyChar -> Bool
isDigit)parsePaddedSignedDigits ::ParseNumericPadding ->Int->ReadPStringparsePaddedSignedDigits :: ParseNumericPadding -> Int -> ReadP String
parsePaddedSignedDigits ParseNumericPadding
pad Int
n =doString
sign <-String -> ReadP String -> ReadP String
forall a. a -> ReadP a -> ReadP a
optionString
""(ReadP String -> ReadP String) -> ReadP String -> ReadP String
forall a b. (a -> b) -> a -> b
$Char -> ReadP Char
charChar
'-'ReadP Char -> ReadP String -> ReadP String
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>String -> ReadP String
forall (m :: * -> *) a. Monad m => a -> m a
returnString
"-"String
digits <-PaddingSide -> ParseNumericPadding -> Bool -> Int -> ReadP String
parsePaddedDigits PaddingSide
PrePadding ParseNumericPadding
pad Bool
FalseInt
n String -> ReadP String
forall (m :: * -> *) a. Monad m => a -> m a
return(String -> ReadP String) -> String -> ReadP String
forall a b. (a -> b) -> a -> b
$String
sign String -> String -> String
forall a. [a] -> [a] -> [a]
++String
digits parseSignedDecimal ::ReadPStringparseSignedDecimal :: ReadP String
parseSignedDecimal =doString
sign <-String -> ReadP String -> ReadP String
forall a. a -> ReadP a -> ReadP a
optionString
""(ReadP String -> ReadP String) -> ReadP String -> ReadP String
forall a b. (a -> b) -> a -> b
$Char -> ReadP Char
charChar
'-'ReadP Char -> ReadP String -> ReadP String
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>String -> ReadP String
forall (m :: * -> *) a. Monad m => a -> m a
returnString
"-"ReadP ()
skipSpacesString
digits <-ReadP Char -> ReadP String
forall a. ReadP a -> ReadP [a]
many1(ReadP Char -> ReadP String) -> ReadP Char -> ReadP String
forall a b. (a -> b) -> a -> b
$(Char -> Bool) -> ReadP Char
satisfyChar -> Bool
isDigitString
decimaldigits <-String -> ReadP String -> ReadP String
forall a. a -> ReadP a -> ReadP a
optionString
""(ReadP String -> ReadP String) -> ReadP String -> ReadP String
forall a b. (a -> b) -> a -> b
$doChar
_<-Char -> ReadP Char
charChar
'.'String
dd <-ReadP Char -> ReadP String
forall a. ReadP a -> ReadP [a]
many(ReadP Char -> ReadP String) -> ReadP Char -> ReadP String
forall a b. (a -> b) -> a -> b
$(Char -> Bool) -> ReadP Char
satisfyChar -> Bool
isDigitString -> ReadP String
forall (m :: * -> *) a. Monad m => a -> m a
return(String -> ReadP String) -> String -> ReadP String
forall a b. (a -> b) -> a -> b
$Char
'.'Char -> String -> String
forall a. a -> [a] -> [a]
:String
dd String -> ReadP String
forall (m :: * -> *) a. Monad m => a -> m a
return(String -> ReadP String) -> String -> ReadP String
forall a b. (a -> b) -> a -> b
$String
sign String -> String -> String
forall a. [a] -> [a] -> [a]
++String
digits String -> String -> String
forall a. [a] -> [a] -> [a]
++String
decimaldigits timeParseTimeSpecifier ::TimeLocale ->MaybeParseNumericPadding ->Char->ReadPStringtimeParseTimeSpecifier :: TimeLocale -> Maybe ParseNumericPadding -> Char -> ReadP String
timeParseTimeSpecifier TimeLocale
l Maybe ParseNumericPadding
mpad Char
c =letdigits' :: PaddingSide -> ParseNumericPadding -> Bool -> Int -> ReadP String
digits' PaddingSide
ps ParseNumericPadding
pad =PaddingSide -> ParseNumericPadding -> Bool -> Int -> ReadP String
parsePaddedDigits PaddingSide
ps (ParseNumericPadding
-> Maybe ParseNumericPadding -> ParseNumericPadding
forall a. a -> Maybe a -> a
fromMaybeParseNumericPadding
pad Maybe ParseNumericPadding
mpad )digits :: ParseNumericPadding -> Int -> ReadP String
digits ParseNumericPadding
pad =PaddingSide -> ParseNumericPadding -> Bool -> Int -> ReadP String
digits' PaddingSide
PrePadding ParseNumericPadding
pad Bool
FalseoneOf :: [String] -> ReadP String
oneOf =[ReadP String] -> ReadP String
forall a. [ReadP a] -> ReadP a
choice([ReadP String] -> ReadP String)
-> ([String] -> [ReadP String]) -> [String] -> ReadP String
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(String -> ReadP String) -> [String] -> [ReadP String]
forall a b. (a -> b) -> [a] -> [b]
mapString -> ReadP String
stringCI numericTZ :: ReadP String
numericTZ =doChar
s <-[ReadP Char] -> ReadP Char
forall a. [ReadP a] -> ReadP a
choice[Char -> ReadP Char
charChar
'+',Char -> ReadP Char
charChar
'-']String
h <-PaddingSide -> ParseNumericPadding -> Bool -> Int -> ReadP String
parsePaddedDigits PaddingSide
PrePadding ParseNumericPadding
ZeroPadding Bool
FalseInt
2ReadP Char -> ReadP ()
forall a. ReadP a -> ReadP ()
optional(Char -> ReadP Char
charChar
':')String
m <-PaddingSide -> ParseNumericPadding -> Bool -> Int -> ReadP String
parsePaddedDigits PaddingSide
PrePadding ParseNumericPadding
ZeroPadding Bool
FalseInt
2String -> ReadP String
forall (m :: * -> *) a. Monad m => a -> m a
return(Char
s Char -> String -> String
forall a. a -> [a] -> [a]
:String
h String -> String -> String
forall a. [a] -> [a] -> [a]
++String
m )allowNegative ::ReadPString->ReadPStringallowNegative :: ReadP String -> ReadP String
allowNegative ReadP String
p =(Char -> ReadP Char
charChar
'-'ReadP Char -> ReadP String -> ReadP String
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>(String -> String) -> ReadP String -> ReadP String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap(Char
'-'Char -> String -> String
forall a. a -> [a] -> [a]
:)ReadP String
p )ReadP String -> ReadP String -> ReadP String
forall a. ReadP a -> ReadP a -> ReadP a
<++ReadP String
p incaseChar
c of-- centuryChar
'C'->ReadP String -> ReadP String
allowNegative (ReadP String -> ReadP String) -> ReadP String -> ReadP String
forall a b. (a -> b) -> a -> b
$ParseNumericPadding -> Int -> ReadP String
digits ParseNumericPadding
SpacePadding Int
2Char
'f'->ReadP String -> ReadP String
allowNegative (ReadP String -> ReadP String) -> ReadP String -> ReadP String
forall a b. (a -> b) -> a -> b
$ParseNumericPadding -> Int -> ReadP String
digits ParseNumericPadding
SpacePadding Int
2-- yearChar
'Y'->ReadP String -> ReadP String
allowNegative (ReadP String -> ReadP String) -> ReadP String -> ReadP String
forall a b. (a -> b) -> a -> b
$ParseNumericPadding -> Int -> ReadP String
digits ParseNumericPadding
SpacePadding Int
4Char
'G'->ReadP String -> ReadP String
allowNegative (ReadP String -> ReadP String) -> ReadP String -> ReadP String
forall a b. (a -> b) -> a -> b
$ParseNumericPadding -> Int -> ReadP String
digits ParseNumericPadding
SpacePadding Int
4-- year of centuryChar
'y'->ParseNumericPadding -> Int -> ReadP String
digits ParseNumericPadding
ZeroPadding Int
2Char
'g'->ParseNumericPadding -> Int -> ReadP String
digits ParseNumericPadding
ZeroPadding Int
2-- month of yearChar
'B'->[String] -> ReadP String
oneOf (((String, String) -> String) -> [(String, String)] -> [String]
forall a b. (a -> b) -> [a] -> [b]
map(String, String) -> String
forall a b. (a, b) -> a
fst(TimeLocale -> [(String, String)]
months TimeLocale
l ))Char
'b'->[String] -> ReadP String
oneOf (((String, String) -> String) -> [(String, String)] -> [String]
forall a b. (a -> b) -> [a] -> [b]
map(String, String) -> String
forall a b. (a, b) -> b
snd(TimeLocale -> [(String, String)]
months TimeLocale
l ))Char
'm'->ParseNumericPadding -> Int -> ReadP String
digits ParseNumericPadding
ZeroPadding Int
2-- day of monthChar
'd'->ParseNumericPadding -> Int -> ReadP String
digits ParseNumericPadding
ZeroPadding Int
2Char
'e'->ParseNumericPadding -> Int -> ReadP String
digits ParseNumericPadding
SpacePadding Int
2-- week of yearChar
'V'->ParseNumericPadding -> Int -> ReadP String
digits ParseNumericPadding
ZeroPadding Int
2Char
'U'->ParseNumericPadding -> Int -> ReadP String
digits ParseNumericPadding
ZeroPadding Int
2Char
'W'->ParseNumericPadding -> Int -> ReadP String
digits ParseNumericPadding
ZeroPadding Int
2-- day of weekChar
'u'->[String] -> ReadP String
oneOf ([String] -> ReadP String) -> [String] -> ReadP String
forall a b. (a -> b) -> a -> b
$(Char -> String) -> String -> [String]
forall a b. (a -> b) -> [a] -> [b]
map(Char -> String -> String
forall a. a -> [a] -> [a]
:[])[Char
'1'..Char
'7']Char
'a'->[String] -> ReadP String
oneOf (((String, String) -> String) -> [(String, String)] -> [String]
forall a b. (a -> b) -> [a] -> [b]
map(String, String) -> String
forall a b. (a, b) -> b
snd(TimeLocale -> [(String, String)]
wDays TimeLocale
l ))Char
'A'->[String] -> ReadP String
oneOf (((String, String) -> String) -> [(String, String)] -> [String]
forall a b. (a -> b) -> [a] -> [b]
map(String, String) -> String
forall a b. (a, b) -> a
fst(TimeLocale -> [(String, String)]
wDays TimeLocale
l ))Char
'w'->[String] -> ReadP String
oneOf ([String] -> ReadP String) -> [String] -> ReadP String
forall a b. (a -> b) -> a -> b
$(Char -> String) -> String -> [String]
forall a b. (a -> b) -> [a] -> [b]
map(Char -> String -> String
forall a. a -> [a] -> [a]
:[])[Char
'0'..Char
'6']-- day of yearChar
'j'->ParseNumericPadding -> Int -> ReadP String
digits ParseNumericPadding
ZeroPadding Int
3-- dayhalf of day (i.e. AM or PM)Char
'P'->[String] -> ReadP String
oneOf (let(String
am ,String
pm )=TimeLocale -> (String, String)
amPm TimeLocale
l in[String
am ,String
pm ])Char
'p'->[String] -> ReadP String
oneOf (let(String
am ,String
pm )=TimeLocale -> (String, String)
amPm TimeLocale
l in[String
am ,String
pm ])-- hour of day (i.e. 24h)Char
'H'->ParseNumericPadding -> Int -> ReadP String
digits ParseNumericPadding
ZeroPadding Int
2Char
'k'->ParseNumericPadding -> Int -> ReadP String
digits ParseNumericPadding
SpacePadding Int
2-- hour of dayhalf (i.e. 12h)Char
'I'->ParseNumericPadding -> Int -> ReadP String
digits ParseNumericPadding
ZeroPadding Int
2Char
'l'->ParseNumericPadding -> Int -> ReadP String
digits ParseNumericPadding
SpacePadding Int
2-- minute of hourChar
'M'->ParseNumericPadding -> Int -> ReadP String
digits ParseNumericPadding
ZeroPadding Int
2-- second of minuteChar
'S'->ParseNumericPadding -> Int -> ReadP String
digits ParseNumericPadding
ZeroPadding Int
2-- picosecond of secondChar
'q'->PaddingSide -> ParseNumericPadding -> Bool -> Int -> ReadP String
digits' PaddingSide
PostPadding ParseNumericPadding
ZeroPadding Bool
TrueInt
12Char
'Q'->(Char -> ReadP Char
charChar
'.'ReadP Char -> ReadP String -> ReadP String
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>PaddingSide -> ParseNumericPadding -> Bool -> Int -> ReadP String
digits' PaddingSide
PostPadding ParseNumericPadding
NoPadding Bool
TrueInt
12)ReadP String -> ReadP String -> ReadP String
forall a. ReadP a -> ReadP a -> ReadP a
<++String -> ReadP String
forall (m :: * -> *) a. Monad m => a -> m a
returnString
""-- time zoneChar
'z'->ReadP String
numericTZ Char
'Z'->(Char -> Bool) -> ReadP String
munch1Char -> Bool
isAlphaReadP String -> ReadP String -> ReadP String
forall a. ReadP a -> ReadP a -> ReadP a
<++ReadP String
numericTZ -- seconds since epochChar
's'->(Char -> ReadP Char
charChar
'-'ReadP Char -> ReadP String -> ReadP String
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>(String -> String) -> ReadP String -> ReadP String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap(Char
'-'Char -> String -> String
forall a. a -> [a] -> [a]
:)((Char -> Bool) -> ReadP String
munch1Char -> Bool
isDigit))ReadP String -> ReadP String -> ReadP String
forall a. ReadP a -> ReadP a -> ReadP a
<++(Char -> Bool) -> ReadP String
munch1Char -> Bool
isDigitChar
_->String -> ReadP String
forall (m :: * -> *) a. MonadFail m => String -> m a
fail(String -> ReadP String) -> String -> ReadP String
forall a b. (a -> b) -> a -> b
$String
"Unknown format character: "String -> String -> String
forall a. [a] -> [a] -> [a]
++Char -> String
forall a. Show a => a -> String
showChar
c timeSubstituteTimeSpecifier ::TimeLocale ->Char->MaybeStringtimeSubstituteTimeSpecifier :: TimeLocale -> Char -> Maybe String
timeSubstituteTimeSpecifier TimeLocale
l Char
'c'=String -> Maybe String
forall a. a -> Maybe a
Just(String -> Maybe String) -> String -> Maybe String
forall a b. (a -> b) -> a -> b
$TimeLocale -> String
dateTimeFmt TimeLocale
l timeSubstituteTimeSpecifier TimeLocale
_Char
'R'=String -> Maybe String
forall a. a -> Maybe a
JustString
"%H:%M"timeSubstituteTimeSpecifier TimeLocale
_Char
'T'=String -> Maybe String
forall a. a -> Maybe a
JustString
"%H:%M:%S"timeSubstituteTimeSpecifier TimeLocale
l Char
'X'=String -> Maybe String
forall a. a -> Maybe a
Just(String -> Maybe String) -> String -> Maybe String
forall a b. (a -> b) -> a -> b
$TimeLocale -> String
timeFmt TimeLocale
l timeSubstituteTimeSpecifier TimeLocale
l Char
'r'=String -> Maybe String
forall a. a -> Maybe a
Just(String -> Maybe String) -> String -> Maybe String
forall a b. (a -> b) -> a -> b
$TimeLocale -> String
time12Fmt TimeLocale
l timeSubstituteTimeSpecifier TimeLocale
_Char
'D'=String -> Maybe String
forall a. a -> Maybe a
JustString
"%m/%d/%y"timeSubstituteTimeSpecifier TimeLocale
_Char
'F'=String -> Maybe String
forall a. a -> Maybe a
JustString
"%Y-%m-%d"timeSubstituteTimeSpecifier TimeLocale
l Char
'x'=String -> Maybe String
forall a. a -> Maybe a
Just(String -> Maybe String) -> String -> Maybe String
forall a b. (a -> b) -> a -> b
$TimeLocale -> String
dateFmt TimeLocale
l timeSubstituteTimeSpecifier TimeLocale
_Char
'h'=String -> Maybe String
forall a. a -> Maybe a
JustString
"%b"timeSubstituteTimeSpecifier TimeLocale
_Char
_=Maybe String
forall a. Maybe a
NothingdurationParseTimeSpecifier ::TimeLocale ->MaybeParseNumericPadding ->Char->ReadPStringdurationParseTimeSpecifier :: TimeLocale -> Maybe ParseNumericPadding -> Char -> ReadP String
durationParseTimeSpecifier TimeLocale
_Maybe ParseNumericPadding
mpad Char
c =letpadopt :: Int -> ReadP String
padopt =ParseNumericPadding -> Int -> ReadP String
parsePaddedSignedDigits (ParseNumericPadding -> Int -> ReadP String)
-> ParseNumericPadding -> Int -> ReadP String
forall a b. (a -> b) -> a -> b
$ParseNumericPadding
-> Maybe ParseNumericPadding -> ParseNumericPadding
forall a. a -> Maybe a -> a
fromMaybeParseNumericPadding
NoPadding Maybe ParseNumericPadding
mpad incaseChar
c ofChar
'y'->Int -> ReadP String
padopt Int
1Char
'b'->Int -> ReadP String
padopt Int
1Char
'B'->Int -> ReadP String
padopt Int
2Char
'w'->Int -> ReadP String
padopt Int
1Char
'd'->Int -> ReadP String
padopt Int
1Char
'D'->Int -> ReadP String
padopt Int
1Char
'h'->Int -> ReadP String
padopt Int
1Char
'H'->Int -> ReadP String
padopt Int
2Char
'm'->Int -> ReadP String
padopt Int
1Char
'M'->Int -> ReadP String
padopt Int
2Char
's'->ReadP String
parseSignedDecimal Char
'S'->ReadP String
parseSignedDecimal Char
_->String -> ReadP String
forall (m :: * -> *) a. MonadFail m => String -> m a
fail(String -> ReadP String) -> String -> ReadP String
forall a b. (a -> b) -> a -> b
$String
"Unknown format character: "String -> String -> String
forall a. [a] -> [a] -> [a]
++Char -> String
forall a. Show a => a -> String
showChar
c 

AltStyle によって変換されたページ (->オリジナル) /