diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,6 +1,9 @@
 Change log
 ==========
 
+#### 2.0.0.2
+- Added non-zero day padding for RFC822
+
 #### 2.0.0.1
 - Compatibility with monoid-subclasses >= 0.4.1
 - Renamed github repository to match package name
diff --git a/Data/Time/RFC2822.hs b/Data/Time/RFC2822.hs
--- a/Data/Time/RFC2822.hs
+++ b/Data/Time/RFC2822.hs
@@ -62,16 +62,11 @@
                     else " " ++ timeZoneStr
 
 formatsRFC2822 :: [Text]
-formatsRFC2822 = [ "%a, %e %b %Y %T GMT"
-                 , "%a, %e %b %Y %T %z"
-                 , "%e %b %Y %T GMT"
-                 , "%e %b %Y %T %z"
-                 -- Support for hours:minutes
-                 , "%a, %e %b %Y %R GMT"
-                 , "%a, %e %b %Y %R %z"
-                 , "%e %b %Y %R GMT"
-                 , "%e %b %Y %R %z"
-                 ]
+formatsRFC2822 = do
+  day  <- ["%a, ", ""]
+  time <- ["%T", "%R"]   -- Support for hours:minutes
+  zone <- ["GMT", "%z"]
+  return $ day <> "%e %b %Y " <> time <> " " <> zone
 
 parseTimeRFC2822 :: (TextualMonoid t) => t -> Maybe ZonedTime
 parseTimeRFC2822 t = foldr (<|>) Nothing $ map parse formatsRFC2822
diff --git a/Data/Time/RFC3339.hs b/Data/Time/RFC3339.hs
--- a/Data/Time/RFC3339.hs
+++ b/Data/Time/RFC3339.hs
@@ -56,11 +56,10 @@
                     else take 3 timeZoneStr <> ":" <> drop 3 timeZoneStr
 
 formatsRFC3339 :: [Text]
-formatsRFC3339 = [ "%FT%TZ"
-                 , "%FT%T%z"
-                 , "%FT%T%Q%z"
-                 , "%FT%T%QZ"
-                 ]
+formatsRFC3339 = do
+  fraction <- ["%Q", ""]
+  zone <- ["Z", "%z"]
+  return $ "%FT%T" <> fraction <> zone
 
 parseTimeRFC3339 :: (TextualMonoid t) => t -> Maybe ZonedTime
 parseTimeRFC3339 = parseTimeUsing formatsRFC3339
diff --git a/Data/Time/RFC822.hs b/Data/Time/RFC822.hs
--- a/Data/Time/RFC822.hs
+++ b/Data/Time/RFC822.hs
@@ -29,6 +29,7 @@
 import           Control.Applicative
 
 import           Data.Maybe
+import           Data.Monoid         ((<>))
 import           Data.Monoid.Textual hiding (foldr, map)
 import           Data.String         (fromString)
 import           Data.Text           (Text)
@@ -42,23 +43,12 @@
 formatTimeRFC822 zonedTime = fromString $ formatTime defaultTimeLocale "%a, %d %b %Y %X %z" zonedTime
 
 formatsRFC822 :: [Text]
-formatsRFC822 = [ "%a, %d %b %y %X %z"
-                , "%a, %d %b %y %X %Z"
-                , "%a, %d %b %y %H:%M %z"
-                , "%a, %d %b %y %H:%M %Z"
-                , "%a, %d %b %Y %X %z"
-                , "%a, %d %b %Y %X %Z"
-                , "%a, %d %b %Y %H:%M %z"
-                , "%a, %d %b %Y %H:%M %Z"
-                , "%d %b %y %X %z"
-                , "%d %b %y %X %Z"
-                , "%d %b %y %H:%M %z"
-                , "%d %b %y %H:%M %Z"
-                , "%d %b %Y %X %z"
-                , "%d %b %Y %X %Z"
-                , "%d %b %Y %H:%M %z"
-                , "%d %b %Y %H:%M %Z"
-                ]
+formatsRFC822 = do
+  day  <- ["%a, ", ""]
+  year <- ["%y", "%Y"]
+  time <- ["%X", "%H:%M"]
+  zone <- ["%z", "%Z"]
+  return $ day <> "%e %b " <> year <> " " <> time <> " " <> zone
 
 parseTimeRFC822 :: (TextualMonoid t) => t -> Maybe ZonedTime
 parseTimeRFC822 = parseTimeUsing formatsRFC822
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -92,8 +92,10 @@
   isJust (parseTimeRFC822 "Wed, 02 Oct 2002 13:00:00 GMT") @?= True
   isJust (parseTimeRFC822 "Wed, 02 Oct 2002 13:00:00 +0100") @?= True
   isJust (parseTimeRFC822 "Wed, 02 Oct 2002 13:00 +0100") @?= True
+  isJust (parseTimeRFC822 "Wed, 2 Oct 2002 13:00 +0100") @?= True
   isJust (parseTimeRFC822 "02 Oct 2002 13:00 +0100") @?= True
   isJust (parseTimeRFC822 "02 Oct 02 13:00 +0100") @?= True
+  isJust (parseTimeRFC822 "2 Oct 02 13:00 +0100") @?= True
 
 
 properties :: TestTree
diff --git a/timerep.cabal b/timerep.cabal
--- a/timerep.cabal
+++ b/timerep.cabal
@@ -1,5 +1,5 @@
 name:          timerep
-version:       2.0.0.1
+version:       2.0.0.2
 category:      Web, Time, Parser, Text
 synopsis:      Parse and display time according to some RFCs (RFC3339, RFC2822, RFC822)
 description:
