diff --git a/Data/Attoparsec/Time.hs b/Data/Attoparsec/Time.hs
--- a/Data/Attoparsec/Time.hs
+++ b/Data/Attoparsec/Time.hs
@@ -19,6 +19,8 @@
     , timeZone
     , utcTime
     , zonedTime
+    , month
+    , quarter
     ) where
 
 import Prelude.Compat
@@ -33,6 +35,8 @@
 import Data.Int (Int64)
 import Data.Maybe (fromMaybe)
 import Data.Time.Calendar (Day, fromGregorianValid)
+import Data.Time.Calendar.Quarter.Compat (Quarter, QuarterOfYear (..), fromYearQuarter)
+import Data.Time.Calendar.Month.Compat (Month, fromYearMonthValid)
 import Data.Time.Clock (UTCTime(..))
 import qualified Data.Text as T
 import qualified Data.Time.LocalTime as Local
@@ -45,6 +49,28 @@
   m <- (twoDigits <* char '-') <|> fail "date must be of form [+,-]YYYY-MM-DD"
   d <- twoDigits <|> fail "date must be of form [+,-]YYYY-MM-DD"
   maybe (fail "invalid date") return (fromGregorianValid (absOrNeg y) m d)
+
+-- | Parse a month of the form @[+,-]YYYY-MM@.
+month :: Parser Month
+month = do
+  absOrNeg <- negate <$ char '-' <|> id <$ char '+' <|> pure id
+  y <- (decimal <* char '-') <|> fail "month must be of form [+,-]YYYY-MM"
+  m <- twoDigits <|> fail "month must be of form [+,-]YYYY-MM"
+  maybe (fail "invalid month") return (fromYearMonthValid (absOrNeg y) m)
+
+-- | Parse a quarter of the form @[+,-]YYYY-QN@.
+quarter :: Parser Quarter
+quarter = do
+  absOrNeg <- negate <$ char '-' <|> id <$ char '+' <|> pure id
+  y <- (decimal <* char '-') <|> fail "month must be of form [+,-]YYYY-MM"
+  _ <- char 'q' <|> char 'Q'
+  q <- parseQ
+  return $! fromYearQuarter (absOrNeg y) q
+  where
+    parseQ = Q1 <$ char '1'
+      <|> Q2 <$ char '2'
+      <|> Q3 <$ char '3'
+      <|> Q4 <$ char '4'
 
 -- | Parse a two-digit integer (e.g. day of month, hour).
 twoDigits :: Parser Int
diff --git a/Data/Attoparsec/Time/Internal.hs b/Data/Attoparsec/Time/Internal.hs
--- a/Data/Attoparsec/Time/Internal.hs
+++ b/Data/Attoparsec/Time/Internal.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 -- |
 -- Module:      Data.Aeson.Internal.Time
@@ -19,50 +18,16 @@
 
 import Prelude.Compat
 
+import Data.Fixed (Fixed(MkFixed), Pico)
 import Data.Int (Int64)
-import Data.Time
-import Unsafe.Coerce (unsafeCoerce)
-
-#if MIN_VERSION_time(1,6,0)
-
-import Data.Time.Clock (diffTimeToPicoseconds)
-
-#endif
-
-#if MIN_VERSION_base(4,7,0)
-
-import Data.Fixed (Pico, Fixed(MkFixed))
-
-#else
-
-import Data.Fixed (Pico)
-
-#endif
-
-#if !MIN_VERSION_time(1,6,0)
-
-diffTimeToPicoseconds :: DiffTime -> Integer
-diffTimeToPicoseconds = unsafeCoerce
-
-#endif
-
-#if MIN_VERSION_base(4,7,0)
+import Data.Time (TimeOfDay(..))
+import Data.Time.Clock.Compat
 
 toPico :: Integer -> Pico
 toPico = MkFixed
 
 fromPico :: Pico -> Integer
 fromPico (MkFixed i) = i
-
-#else
-
-toPico :: Integer -> Pico
-toPico = unsafeCoerce
-
-fromPico :: Pico -> Integer
-fromPico = unsafeCoerce
-
-#endif
 
 -- | Like TimeOfDay, but using a fixed-width integer for seconds.
 data TimeOfDay64 = TOD {-# UNPACK #-} !Int
diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import Distribution.Simple
-main = defaultMain
diff --git a/attoparsec-iso8601.cabal b/attoparsec-iso8601.cabal
--- a/attoparsec-iso8601.cabal
+++ b/attoparsec-iso8601.cabal
@@ -1,5 +1,5 @@
 name:            attoparsec-iso8601
-version:         1.0.1.0
+version:         1.0.2.0
 synopsis:        Parsing of ISO 8601 dates, originally from aeson.
 description:     Parsing of ISO 8601 dates, originally from aeson.
 license:         BSD3
@@ -11,9 +11,10 @@
 maintainer:      Adam Bergmark <adam@bergmark.nl>
 stability:       experimental
 cabal-version:   >=1.10
-homepage:        https://github.com/bos/aeson
-bug-reports:     https://github.com/bos/aeson/issues
+homepage:        https://github.com/haskell/aeson
+bug-reports:     https://github.com/haskell/aeson/issues
 build-type:      Simple
+tested-with:     GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.3, GHC == 8.10.1
 extra-source-files:
   README.md
 
@@ -35,11 +36,12 @@
     Data.Attoparsec.Time.Internal
     Data.Attoparsec.Time
   build-depends:
-    attoparsec >= 0.13.0.1,
-    base >= 4.5 && < 5,
-    base-compat >= 0.9.1 && < 0.11,
-    text >= 1.1.1.0,
-    time >= 1.1.1.4
+    attoparsec >= 0.13.0.1 && < 0.14.0.0,
+    base >= 4.7 && < 5,
+    base-compat-batteries >= 0.10.0 && < 0.12,
+    time-compat >= 1.9.4 && < 1.10,
+    text >= 1.1.1.0 && < 1.3.0.0,
+    time >= 1.1.1.4 && < 1.12
 
   if flag(fast)
     ghc-options: -O0
@@ -52,4 +54,5 @@
 
 source-repository head
   type:     git
-  location: git://github.com/bos/aeson.git
+  location: git://github.com/haskell/aeson.git
+  subdir:   attoparsec-iso8601
