formatting/parsing time differences: swap upper/lower case of specifiers (#22)
authorAshley Yakeley <ashley@semantic.org>
Fri, 19 Jan 2018 05:09:59 +0000 (21:09 -0800)
committerAshley Yakeley <ashley@semantic.org>
Fri, 19 Jan 2018 05:09:59 +0000 (21:09 -0800)
lib/Data/Time/Format/Format/Class.hs
lib/Data/Time/Format/Format/Instances.hs
lib/Data/Time/Format/Parse/Class.hs
lib/Data/Time/Format/Parse/Instances.hs
test/main/Test/Format/Format.hs
test/main/Test/Format/ParseTime.hs

index 74f26e0..46245a6 100644 (file)
@@ -242,73 +242,73 @@ showPaddedFixedFraction pado x = let
 --
 -- For 'NominalDiffTime' and 'DiffTime':
 --
--- [@%W@] total whole weeks
+-- [@%w@] total whole weeks
 --
--- [@%D@] total whole days
+-- [@%d@] total whole days
 --
--- [@%d@] whole days of week
+-- [@%D@] whole days of week
 --
--- [@%H@] total whole hours
+-- [@%h@] total whole hours
 --
--- [@%h@] whole hours of day
+-- [@%H@] whole hours of day
 --
--- [@%M@] total whole minutes
+-- [@%m@] total whole minutes
 --
--- [@%m@] whole minutes of hour
+-- [@%M@] whole minutes of hour
 --
--- [@%S@] total whole seconds
+-- [@%s@] total whole seconds
 --
--- [@%ES@] total seconds, with decimal point and up to \<width\> (default 12) decimal places, without trailing zeros.
--- For a whole number of seconds, @%ES@ omits the decimal point unless padding is specified.
+-- [@%Es@] total seconds, with decimal point and up to \<width\> (default 12) decimal places, without trailing zeros.
+-- For a whole number of seconds, @%Es@ omits the decimal point unless padding is specified.
 --
--- [@%0ES@] total seconds, with decimal point and \<width\> (default 12) decimal places.
+-- [@%0Es@] total seconds, with decimal point and \<width\> (default 12) decimal places.
 --
--- [@%s@] whole seconds of minute
+-- [@%S@] whole seconds of minute
 --
--- [@%Es@] seconds of minute, with decimal point and up to \<width\> (default 12) decimal places, without trailing zeros.
--- For a whole number of seconds, @%Es@ omits the decimal point unless padding is specified.
+-- [@%ES@] seconds of minute, with decimal point and up to \<width\> (default 12) decimal places, without trailing zeros.
+-- For a whole number of seconds, @%ES@ omits the decimal point unless padding is specified.
 --
--- [@%0Es@] seconds of minute as two digits, with decimal point and \<width\> (default 12) decimal places.
+-- [@%0ES@] seconds of minute as two digits, with decimal point and \<width\> (default 12) decimal places.
 --
 -- === 'CalendarDiffDays'
 -- For 'CalendarDiffDays' (and 'CalendarDiffTime'):
 --
--- [@%Y@] total years
+-- [@%y@] total years
 --
--- [@%B@] total months
+-- [@%b@] total months
 --
--- [@%b@] months of year
+-- [@%B@] months of year
 --
--- [@%W@] total weeks, not including months
+-- [@%w@] total weeks, not including months
 --
--- [@%D@] total days, not including months
+-- [@%d@] total days, not including months
 --
--- [@%d@] days of week
+-- [@%D@] days of week
 --
 -- === 'CalendarDiffTime'
 -- For 'CalendarDiffTime':
 --
--- [@%H@] total hours, not including months
+-- [@%h@] total hours, not including months
 --
--- [@%h@] hours of day
+-- [@%H@] hours of day
 --
--- [@%M@] total minutes, not including months
+-- [@%m@] total minutes, not including months
 --
--- [@%m@] minutes of hour
+-- [@%M@] minutes of hour
 --
--- [@%S@] total whole seconds, not including months
+-- [@%s@] total whole seconds, not including months
 --
--- [@%ES@] total seconds, not including months, with decimal point and up to \<width\> (default 12) decimal places, without trailing zeros.
--- For a whole number of seconds, @%ES@ omits the decimal point unless padding is specified.
+-- [@%Es@] total seconds, not including months, with decimal point and up to \<width\> (default 12) decimal places, without trailing zeros.
+-- For a whole number of seconds, @%Es@ omits the decimal point unless padding is specified.
 --
--- [@%0ES@] total seconds, not including months, with decimal point and \<width\> (default 12) decimal places.
+-- [@%0Es@] total seconds, not including months, with decimal point and \<width\> (default 12) decimal places.
 --
--- [@%s@] whole seconds of minute
+-- [@%S@] whole seconds of minute
 --
--- [@%Es@] seconds of minute, with decimal point and up to \<width\> (default 12) decimal places, without trailing zeros.
--- For a whole number of seconds, @%Es@ omits the decimal point unless padding is specified.
+-- [@%ES@] seconds of minute, with decimal point and up to \<width\> (default 12) decimal places, without trailing zeros.
+-- For a whole number of seconds, @%ES@ omits the decimal point unless padding is specified.
 --
--- [@%0Es@] seconds of minute as two digits, with decimal point and \<width\> (default 12) decimal places.
+-- [@%0ES@] seconds of minute as two digits, with decimal point and \<width\> (default 12) decimal places.
 formatTime :: (FormatTime t) => TimeLocale -> String -> t -> String
 formatTime _ [] _ = ""
 formatTime locale ('%':cs) t = case formatTime1 locale cs t of
index 6087f4a..2106437 100644 (file)
@@ -137,17 +137,17 @@ instance FormatTime UniversalTime where
     formatCharacter alt c = fmap (\f fo t -> f fo (ut1ToLocalTime 0 t)) (formatCharacter alt c)
 
 instance FormatTime NominalDiffTime where
-    formatCharacter _ 'W' = Just $ formatNumberStd 1 $ quotBy $ 7 * 86400
-    formatCharacter _ 'D' = Just $ formatNumberStd 1 $ quotBy 86400
-    formatCharacter _ 'd' = Just $ formatNumberStd 1 $ remBy 7 . quotBy 86400
-    formatCharacter _ 'H' = Just $ formatNumberStd 1 $ quotBy 3600
-    formatCharacter _ 'h' = Just $ formatNumberStd 2 $ remBy 24 . quotBy 3600
-    formatCharacter _ 'M' = Just $ formatNumberStd 1 $ quotBy 60
-    formatCharacter _ 'm' = Just $ formatNumberStd 2 $ remBy 60 . quotBy 60
-    formatCharacter False 'S' = Just $ formatNumberStd 1 $ quotBy 1
-    formatCharacter True 'S' = Just $ formatGeneral False False 12 '0' $ \_ padf t -> showPaddedFixed NoPad padf (realToFrac t :: Pico)
-    formatCharacter False 's' = Just $ formatNumberStd 2 $ remBy 60 . quotBy 1
-    formatCharacter True 's' = Just $ formatGeneral False False 12 '0' $ \_ padf t -> let
+    formatCharacter _ 'w' = Just $ formatNumberStd 1 $ quotBy $ 7 * 86400
+    formatCharacter _ 'd' = Just $ formatNumberStd 1 $ quotBy 86400
+    formatCharacter _ 'D' = Just $ formatNumberStd 1 $ remBy 7 . quotBy 86400
+    formatCharacter _ 'h' = Just $ formatNumberStd 1 $ quotBy 3600
+    formatCharacter _ 'H' = Just $ formatNumberStd 2 $ remBy 24 . quotBy 3600
+    formatCharacter _ 'm' = Just $ formatNumberStd 1 $ quotBy 60
+    formatCharacter _ 'M' = Just $ formatNumberStd 2 $ remBy 60 . quotBy 60
+    formatCharacter False 's' = Just $ formatNumberStd 1 $ quotBy 1
+    formatCharacter True 's' = Just $ formatGeneral False False 12 '0' $ \_ padf t -> showPaddedFixed NoPad padf (realToFrac t :: Pico)
+    formatCharacter False 'S' = Just $ formatNumberStd 2 $ remBy 60 . quotBy 1
+    formatCharacter True 'S' = Just $ formatGeneral False False 12 '0' $ \_ padf t -> let
         padn = case padf of
             NoPad -> NoPad
             Pad _ c -> Pad 2 c
@@ -155,17 +155,17 @@ instance FormatTime NominalDiffTime where
     formatCharacter _ _   = Nothing
 
 instance FormatTime DiffTime where
-    formatCharacter _ 'W' = Just $ formatNumberStd 1 $ quotBy $ 7 * 86400
-    formatCharacter _ 'D' = Just $ formatNumberStd 1 $ quotBy 86400
-    formatCharacter _ 'd' = Just $ formatNumberStd 1 $ remBy 7 . quotBy 86400
-    formatCharacter _ 'H' = Just $ formatNumberStd 1 $ quotBy 3600
-    formatCharacter _ 'h' = Just $ formatNumberStd 2 $ remBy 24 . quotBy 3600
-    formatCharacter _ 'M' = Just $ formatNumberStd 1 $ quotBy 60
-    formatCharacter _ 'm' = Just $ formatNumberStd 2 $ remBy 60 . quotBy 60
-    formatCharacter False 'S' = Just $ formatNumberStd 1 $ quotBy 1
-    formatCharacter True 'S' = Just $ formatGeneral False False 12 '0' $ \_ padf t -> showPaddedFixed NoPad padf (realToFrac t :: Pico)
-    formatCharacter False 's' = Just $ formatNumberStd 2 $ remBy 60 . quotBy 1
-    formatCharacter True 's' = Just $ formatGeneral False False 12 '0' $ \_ padf t -> let
+    formatCharacter _ 'w' = Just $ formatNumberStd 1 $ quotBy $ 7 * 86400
+    formatCharacter _ 'd' = Just $ formatNumberStd 1 $ quotBy 86400
+    formatCharacter _ 'D' = Just $ formatNumberStd 1 $ remBy 7 . quotBy 86400
+    formatCharacter _ 'h' = Just $ formatNumberStd 1 $ quotBy 3600
+    formatCharacter _ 'H' = Just $ formatNumberStd 2 $ remBy 24 . quotBy 3600
+    formatCharacter _ 'm' = Just $ formatNumberStd 1 $ quotBy 60
+    formatCharacter _ 'M' = Just $ formatNumberStd 2 $ remBy 60 . quotBy 60
+    formatCharacter False 's' = Just $ formatNumberStd 1 $ quotBy 1
+    formatCharacter True 's' = Just $ formatGeneral False False 12 '0' $ \_ padf t -> showPaddedFixed NoPad padf (realToFrac t :: Pico)
+    formatCharacter False 'S' = Just $ formatNumberStd 2 $ remBy 60 . quotBy 1
+    formatCharacter True 'S' = Just $ formatGeneral False False 12 '0' $ \_ padf t -> let
         padn = case padf of
             NoPad -> NoPad
             Pad _ c -> Pad 2 c
@@ -173,16 +173,16 @@ instance FormatTime DiffTime where
     formatCharacter _ _   = Nothing
 
 instance FormatTime CalendarDiffDays where
-    formatCharacter _ 'Y' = Just $ formatNumberStd 1 $ quotBy 12 . cdMonths
-    formatCharacter _ 'B' = Just $ formatNumberStd 1 $ cdMonths
-    formatCharacter _ 'b' = Just $ formatNumberStd 2 $ remBy 12 . cdMonths
-    formatCharacter _ 'W' = Just $ formatNumberStd 1 $ quotBy 7 . cdDays
-    formatCharacter _ 'D' = Just $ formatNumberStd 1 $ cdDays
-    formatCharacter _ 'd' = Just $ formatNumberStd 1 $ remBy 7 . cdDays
+    formatCharacter _ 'y' = Just $ formatNumberStd 1 $ quotBy 12 . cdMonths
+    formatCharacter _ 'b' = Just $ formatNumberStd 1 $ cdMonths
+    formatCharacter _ 'B' = Just $ formatNumberStd 2 $ remBy 12 . cdMonths
+    formatCharacter _ 'w' = Just $ formatNumberStd 1 $ quotBy 7 . cdDays
+    formatCharacter _ 'd' = Just $ formatNumberStd 1 $ cdDays
+    formatCharacter _ 'D' = Just $ formatNumberStd 1 $ remBy 7 . cdDays
     formatCharacter _ _   = Nothing
 
 instance FormatTime CalendarDiffTime where
-    formatCharacter _ 'Y' = Just $ formatNumberStd 1 $ quotBy 12 . ctMonths
-    formatCharacter _ 'B' = Just $ formatNumberStd 1 $ ctMonths
-    formatCharacter _ 'b' = Just $ formatNumberStd 2 $ remBy 12 . ctMonths
+    formatCharacter _ 'y' = Just $ formatNumberStd 1 $ quotBy 12 . ctMonths
+    formatCharacter _ 'b' = Just $ formatNumberStd 1 $ ctMonths
+    formatCharacter _ 'B' = Just $ formatNumberStd 2 $ remBy 12 . ctMonths
     formatCharacter alt c = fmap (\f fo t -> f fo (ctTime t)) (formatCharacter alt c)
index 3397e81..27e56af 100644 (file)
@@ -205,16 +205,16 @@ durationParseTimeSpecifier :: TimeLocale -> Maybe ParseNumericPadding -> Char ->
 durationParseTimeSpecifier _ mpad c = let
     padopt = parsePaddedSignedDigits $ fromMaybe NoPadding mpad
     in case c of
-        'Y' -> padopt 1
-        'B' -> padopt 1
-        'b' -> padopt 2
-        'W' -> padopt 1
-        'D' -> padopt 1
+        'y' -> padopt 1
+        'b' -> padopt 1
+        'B' -> padopt 2
+        'w' -> padopt 1
         'd' -> padopt 1
-        'H' -> padopt 1
-        'h' -> padopt 2
-        'M' -> padopt 1
-        'm' -> padopt 2
-        'S' -> parseSignedDecimal
+        'D' -> padopt 1
+        'h' -> padopt 1
+        'H' -> padopt 2
+        'm' -> padopt 1
+        'M' -> padopt 2
         's' -> parseSignedDecimal
+        'S' -> parseSignedDecimal
         _   -> fail $ "Unknown format character: " ++ show c
index b82e5e8..7234a17 100644 (file)
@@ -331,18 +331,18 @@ instance ParseTime UniversalTime where
 buildTimeMonths :: [(Char,String)] -> Maybe Integer
 buildTimeMonths xs = do
     tt <- for xs $ \(c,s) -> case c of
-        'Y' -> fmap ((*) 12) $ readMaybe s
-        'B' -> readMaybe s
+        'y' -> fmap ((*) 12) $ readMaybe s
         'b' -> readMaybe s
+        'B' -> readMaybe s
         _ -> return 0
     return $ sum tt
 
 buildTimeDays :: [(Char,String)] -> Maybe Integer
 buildTimeDays xs = do
     tt <- for xs $ \(c,s) -> case c of
-        'W' -> fmap ((*) 7) $ readMaybe s
-        'D' -> readMaybe s
+        'w' -> fmap ((*) 7) $ readMaybe s
         'd' -> readMaybe s
+        'D' -> readMaybe s
         _ -> return 0
     return $ sum tt
 
@@ -354,12 +354,12 @@ buildTimeSeconds xs = do
             i <- readMaybe s
             return $ fromInteger $ i * t
         in case c of
-            'H' -> readInt 3600
             'h' -> readInt 3600
-            'M' -> readInt 60
+            'H' -> readInt 3600
             'm' -> readInt 60
-            'S' -> readMaybe s
+            'M' -> readInt 60
             's' -> readMaybe s
+            'S' -> readMaybe s
             _ -> return 0
     return $ sum tt
 
index 8c88df9..0983bcc 100644 (file)
@@ -100,50 +100,50 @@ testAFormat fmt expected t = testCase fmt $ assertEqual "" expected $ formatTime
 testNominalDiffTime :: TestTree
 testNominalDiffTime = testGroup "NominalDiffTime"
     [
-        testAFormat "%Ww%dd%hh%mm%Ess" "3w2d2h22m8.21s" $ (fromRational $ 23 * 86400 + 8528.21 :: NominalDiffTime),
-        testAFormat "%Dd %Hh %Mm %Ss %ESs" "0d 0h 0m 0s 0.74s" $ (fromRational $ 0.74 :: NominalDiffTime),
-        testAFormat "%Dd %Hh %Mm %Ss %ESs" "0d 0h 0m 0s -0.74s" $ (fromRational $ negate $ 0.74 :: NominalDiffTime),
-        testAFormat "%Dd %Hh %Mm %Ss %ESs %0ESs" "23d 554h 33262m 1995728s 1995728.21s 1995728.210000000000s" $ (fromRational $ 23 * 86400 + 8528.21 :: NominalDiffTime),
-        testAFormat "%Ww%dd%hh%mm%ss" "-3w-2d-2h-22m-8s" $ (fromRational $ negate $ 23 * 86400 + 8528.21 :: NominalDiffTime),
-        testAFormat "%Ww%dd%hh%mm%Ess" "-3w-2d-2h-22m-8.21s" $ (fromRational $ negate $ 23 * 86400 + 8528.21 :: NominalDiffTime),
-        testAFormat "%Ww%dd%hh%mm%ss" "-3w-2d-2h-22m0s" $ (fromRational $ negate $ 23 * 86400 + 8520.21 :: NominalDiffTime),
-        testAFormat "%Ww%dd%hh%mm%Ess" "-3w-2d-2h-22m-0.21s" $ (fromRational $ negate $ 23 * 86400 + 8520.21 :: NominalDiffTime),
-        testAFormat "%Dd %Hh %Mm %ESs" "-23d -554h -33262m -1995728.21s" $ (fromRational $ negate $ 23 * 86400 + 8528.21 :: NominalDiffTime)
+        testAFormat "%ww%Dd%Hh%Mm%ESs" "3w2d2h22m8.21s" $ (fromRational $ 23 * 86400 + 8528.21 :: NominalDiffTime),
+        testAFormat "%dd %hh %mm %ss %Ess" "0d 0h 0m 0s 0.74s" $ (fromRational $ 0.74 :: NominalDiffTime),
+        testAFormat "%dd %hh %mm %ss %Ess" "0d 0h 0m 0s -0.74s" $ (fromRational $ negate $ 0.74 :: NominalDiffTime),
+        testAFormat "%dd %hh %mm %ss %Ess %0Ess" "23d 554h 33262m 1995728s 1995728.21s 1995728.210000000000s" $ (fromRational $ 23 * 86400 + 8528.21 :: NominalDiffTime),
+        testAFormat "%ww%Dd%Hh%Mm%Ss" "-3w-2d-2h-22m-8s" $ (fromRational $ negate $ 23 * 86400 + 8528.21 :: NominalDiffTime),
+        testAFormat "%ww%Dd%Hh%Mm%ESs" "-3w-2d-2h-22m-8.21s" $ (fromRational $ negate $ 23 * 86400 + 8528.21 :: NominalDiffTime),
+        testAFormat "%ww%Dd%Hh%Mm%Ss" "-3w-2d-2h-22m0s" $ (fromRational $ negate $ 23 * 86400 + 8520.21 :: NominalDiffTime),
+        testAFormat "%ww%Dd%Hh%Mm%ESs" "-3w-2d-2h-22m-0.21s" $ (fromRational $ negate $ 23 * 86400 + 8520.21 :: NominalDiffTime),
+        testAFormat "%dd %hh %mm %Ess" "-23d -554h -33262m -1995728.21s" $ (fromRational $ negate $ 23 * 86400 + 8528.21 :: NominalDiffTime)
     ]
 
 testDiffTime :: TestTree
 testDiffTime = testGroup "DiffTime"
     [
-        testAFormat "%Ww%dd%hh%mm%Ess" "3w2d2h22m8.21s" $ (fromRational $ 23 * 86400 + 8528.21 :: DiffTime),
-        testAFormat "%Dd %Hh %Mm %Ss %ESs" "0d 0h 0m 0s 0.74s" $ (fromRational $ 0.74 :: DiffTime),
-        testAFormat "%Dd %Hh %Mm %Ss %ESs" "0d 0h 0m 0s -0.74s" $ (fromRational $ negate $ 0.74 :: DiffTime),
-        testAFormat "%Dd %Hh %Mm %Ss %ESs %0ESs" "23d 554h 33262m 1995728s 1995728.21s 1995728.210000000000s" $ (fromRational $ 23 * 86400 + 8528.21 :: DiffTime),
-        testAFormat "%Ww%dd%hh%mm%ss" "-3w-2d-2h-22m-8s" $ (fromRational $ negate $ 23 * 86400 + 8528.21 :: DiffTime),
-        testAFormat "%Ww%dd%hh%mm%Ess" "-3w-2d-2h-22m-8.21s" $ (fromRational $ negate $ 23 * 86400 + 8528.21 :: DiffTime),
-        testAFormat "%Ww%dd%hh%mm%ss" "-3w-2d-2h-22m0s" $ (fromRational $ negate $ 23 * 86400 + 8520.21 :: DiffTime),
-        testAFormat "%Ww%dd%hh%mm%Ess" "-3w-2d-2h-22m-0.21s" $ (fromRational $ negate $ 23 * 86400 + 8520.21 :: DiffTime),
-        testAFormat "%Dd %Hh %Mm %ESs" "-23d -554h -33262m -1995728.21s" $ (fromRational $ negate $ 23 * 86400 + 8528.21 :: DiffTime)
+        testAFormat "%ww%Dd%Hh%Mm%ESs" "3w2d2h22m8.21s" $ (fromRational $ 23 * 86400 + 8528.21 :: DiffTime),
+        testAFormat "%dd %hh %mm %ss %Ess" "0d 0h 0m 0s 0.74s" $ (fromRational $ 0.74 :: DiffTime),
+        testAFormat "%dd %hh %mm %ss %Ess" "0d 0h 0m 0s -0.74s" $ (fromRational $ negate $ 0.74 :: DiffTime),
+        testAFormat "%dd %hh %mm %ss %Ess %0Ess" "23d 554h 33262m 1995728s 1995728.21s 1995728.210000000000s" $ (fromRational $ 23 * 86400 + 8528.21 :: DiffTime),
+        testAFormat "%ww%Dd%Hh%Mm%Ss" "-3w-2d-2h-22m-8s" $ (fromRational $ negate $ 23 * 86400 + 8528.21 :: DiffTime),
+        testAFormat "%ww%Dd%Hh%Mm%ESs" "-3w-2d-2h-22m-8.21s" $ (fromRational $ negate $ 23 * 86400 + 8528.21 :: DiffTime),
+        testAFormat "%ww%Dd%Hh%Mm%Ss" "-3w-2d-2h-22m0s" $ (fromRational $ negate $ 23 * 86400 + 8520.21 :: DiffTime),
+        testAFormat "%ww%Dd%Hh%Mm%ESs" "-3w-2d-2h-22m-0.21s" $ (fromRational $ negate $ 23 * 86400 + 8520.21 :: DiffTime),
+        testAFormat "%dd %hh %mm %Ess" "-23d -554h -33262m -1995728.21s" $ (fromRational $ negate $ 23 * 86400 + 8528.21 :: DiffTime)
     ]
 
 testCalenderDiffDays :: TestTree
 testCalenderDiffDays = testGroup "CalenderDiffDays"
     [
-        testAFormat "%Yy%bm%Ww%dd" "5y4m3w2d" $ CalendarDiffDays 64 23,
-        testAFormat "%Bm %Dd" "64m 23d" $ CalendarDiffDays 64 23,
-        testAFormat "%Yy%bm%Ww%dd" "-5y-4m-3w-2d" $ CalendarDiffDays (-64) (-23),
-        testAFormat "%Bm %Dd" "-64m -23d" $ CalendarDiffDays (-64) (-23)
+        testAFormat "%yy%Bm%ww%Dd" "5y4m3w2d" $ CalendarDiffDays 64 23,
+        testAFormat "%bm %dd" "64m 23d" $ CalendarDiffDays 64 23,
+        testAFormat "%yy%Bm%ww%Dd" "-5y-4m-3w-2d" $ CalendarDiffDays (-64) (-23),
+        testAFormat "%bm %dd" "-64m -23d" $ CalendarDiffDays (-64) (-23)
     ]
 
 testCalenderDiffTime :: TestTree
 testCalenderDiffTime = testGroup "CalenderDiffTime"
     [
-        testAFormat "%Yy%bm%Ww%dd%hh%mm%ss" "5y4m3w2d2h22m8s" $ CalendarDiffTime 64 $ 23 * 86400 + 8528.21,
-        testAFormat "%Yy%bm%Ww%dd%hh%mm%Ess" "5y4m3w2d2h22m8.21s" $ CalendarDiffTime 64 $ 23 * 86400 + 8528.21,
-        testAFormat "%Yy%bm%Ww%dd%hh%mm%0Ess" "5y4m3w2d2h22m08.210000000000s" $ CalendarDiffTime 64 $ 23 * 86400 + 8528.21,
-        testAFormat "%Bm %Dd %Hh %Mm %ESs" "64m 23d 554h 33262m 1995728.21s" $ CalendarDiffTime 64 $ 23 * 86400 + 8528.21,
-        testAFormat "%Yy%bm%Ww%dd%hh%mm%ss" "-5y-4m-3w-2d-2h-22m-8s" $ CalendarDiffTime (-64) $ negate $ 23 * 86400 + 8528.21,
-        testAFormat "%Yy%bm%Ww%dd%hh%mm%Ess" "-5y-4m-3w-2d-2h-22m-8.21s" $ CalendarDiffTime (-64) $ negate $ 23 * 86400 + 8528.21,
-        testAFormat "%Bm %Dd %Hh %Mm %ESs" "-64m -23d -554h -33262m -1995728.21s" $ CalendarDiffTime (-64) $ negate $ 23 * 86400 + 8528.21
+        testAFormat "%yy%Bm%ww%Dd%Hh%Mm%Ss" "5y4m3w2d2h22m8s" $ CalendarDiffTime 64 $ 23 * 86400 + 8528.21,
+        testAFormat "%yy%Bm%ww%Dd%Hh%Mm%ESs" "5y4m3w2d2h22m8.21s" $ CalendarDiffTime 64 $ 23 * 86400 + 8528.21,
+        testAFormat "%yy%Bm%ww%Dd%Hh%Mm%0ESs" "5y4m3w2d2h22m08.210000000000s" $ CalendarDiffTime 64 $ 23 * 86400 + 8528.21,
+        testAFormat "%bm %dd %hh %mm %Ess" "64m 23d 554h 33262m 1995728.21s" $ CalendarDiffTime 64 $ 23 * 86400 + 8528.21,
+        testAFormat "%yy%Bm%ww%Dd%Hh%Mm%Ss" "-5y-4m-3w-2d-2h-22m-8s" $ CalendarDiffTime (-64) $ negate $ 23 * 86400 + 8528.21,
+        testAFormat "%yy%Bm%ww%Dd%Hh%Mm%ESs" "-5y-4m-3w-2d-2h-22m-8.21s" $ CalendarDiffTime (-64) $ negate $ 23 * 86400 + 8528.21,
+        testAFormat "%bm %dd %hh %mm %Ess" "-64m -23d -554h -33262m -1995728.21s" $ CalendarDiffTime (-64) $ negate $ 23 * 86400 + 8528.21
     ]
 
 testFormat :: TestTree
index 962a7c3..a57c1e7 100644 (file)
@@ -465,16 +465,16 @@ universalTimeFormats :: [FormatString UniversalTime]
 universalTimeFormats = map FormatString []
 
 calendarDiffDaysFormats :: [FormatString CalendarDiffDays]
-calendarDiffDaysFormats = map FormatString ["%Yy%bm%Ww%dd","%Yy%bm%Dd","%Bm%Ww%dd","%Bm%Dd"]
+calendarDiffDaysFormats = map FormatString ["%yy%Bm%ww%Dd","%yy%Bm%dd","%bm%ww%Dd","%bm%dd"]
 
 calendarDiffTimeFormats :: [FormatString CalendarDiffTime]
-calendarDiffTimeFormats = map FormatString ["%Yy%bm%Ww%dd%hh%mm%Ess","%Bm%Ww%dd%hh%mm%Ess","%Bm%Dd%hh%mm%Ess","%Bm%Hh%mm%Ess","%Bm%Mm%Ess","%Bm%Mm%0Ess","%Bm%ESs","%Bm%0ESs"]
+calendarDiffTimeFormats = map FormatString ["%yy%Bm%ww%Dd%Hh%Mm%ESs","%bm%ww%Dd%Hh%Mm%ESs","%bm%dd%Hh%Mm%ESs","%bm%hh%Mm%ESs","%bm%mm%ESs","%bm%mm%0ESs","%bm%Ess","%bm%0Ess"]
 
 diffTimeFormats :: [FormatString DiffTime]
-diffTimeFormats = map FormatString ["%Ww%dd%hh%mm%Ess","%Dd%hh%mm%Ess","%Hh%mm%Ess","%Mm%Ess","%Mm%0Ess","%ESs","%0ESs"]
+diffTimeFormats = map FormatString ["%ww%Dd%Hh%Mm%ESs","%dd%Hh%Mm%ESs","%hh%Mm%ESs","%mm%ESs","%mm%0ESs","%Ess","%0Ess"]
 
 nominalDiffTimeFormats :: [FormatString NominalDiffTime]
-nominalDiffTimeFormats = map FormatString ["%Ww%dd%hh%mm%Ess","%Dd%hh%mm%Ess","%Hh%mm%Ess","%Mm%Ess","%Mm%0Ess","%ESs","%0ESs"]
+nominalDiffTimeFormats = map FormatString ["%ww%Dd%Hh%Mm%ESs","%dd%Hh%Mm%ESs","%hh%Mm%ESs","%mm%ESs","%mm%0ESs","%Ess","%0Ess"]
 
 --
 -- * Formats that do not include all the information