diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,6 +1,10 @@
 Change log
 ==========
 
+### 2.1.0.5
+
+* Remove deprecated time functions
+
 ### 1.0.0.3
 
 * Switched to megaparsec, resulting in double the speed of the old parser.
diff --git a/htoml-megaparsec.cabal b/htoml-megaparsec.cabal
--- a/htoml-megaparsec.cabal
+++ b/htoml-megaparsec.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.0
 name:               htoml-megaparsec
-version:            2.1.0.4
+version:            2.1.0.5
 license:            BSD3
 license-file:       LICENSE
 copyright:          (c) 2013-2016 Cies Breijs, 2017-2018 Vanessa McHale
@@ -45,7 +45,7 @@
         base >=4.8 && <5,
         megaparsec >=6.0.0,
         htoml-internal,
-        text >=1.0 && <2,
+        text >=1.0 && <2.2,
         mtl >=2.2,
         composition-prelude >=0.1.1.0
 
@@ -71,10 +71,10 @@
         megaparsec >=6.0.0,
         unordered-containers >=0.2,
         vector >=0.10,
-        text >=1.0 && <2,
+        text >=1.0 && <2.2,
         mtl >=2.2,
         deepseq,
-        time >=1.5.0
+        time >=1.9
 
     if !impl(ghc >=7.10)
         build-depends: void
@@ -99,7 +99,7 @@
         containers,
         unordered-containers,
         vector,
-        aeson,
+        aeson <2.0.0.0,
         text,
         time,
         htoml-megaparsec,
@@ -107,7 +107,8 @@
         bytestring,
         file-embed,
         tasty,
-        tasty-hspec,
+        tasty-hspec >=1.2,
+        hspec,
         tasty-hunit
 
 benchmark benchmarks
diff --git a/internal/Text/Toml/Parser.hs b/internal/Text/Toml/Parser.hs
--- a/internal/Text/Toml/Parser.hs
+++ b/internal/Text/Toml/Parser.hs
@@ -9,18 +9,17 @@
   ) where
 
 import           Control.Monad
-import           Control.Monad.State    (evalState)
+import           Control.Monad.State      (evalState)
 import           Data.Functor
-import qualified Data.HashMap.Lazy      as M
-import qualified Data.Set               as S
-import           Data.Text              (Text, pack, unpack)
-import qualified Data.Text              as T
-import           Data.Time.Format       (defaultTimeLocale, iso8601DateFormat,
-                                         parseTimeM)
-import qualified Data.Vector            as V
+import qualified Data.HashMap.Lazy        as M
+import qualified Data.Set                 as S
+import           Data.Text                (Text, pack, unpack)
+import qualified Data.Text                as T
+import           Data.Time.Format.ISO8601 (formatParseM, iso8601Format)
+import qualified Data.Vector              as V
 import           Data.Void
-import           Numeric                (readHex)
-import           Text.Megaparsec        hiding (noneOf, oneOf)
+import           Numeric                  (readHex)
+import           Text.Megaparsec          hiding (noneOf, oneOf)
 import           Text.Megaparsec.CharRW
 import           Text.Toml.Types
 
@@ -183,9 +182,7 @@
 datetime :: (TomlM m) => Parser m Node
 datetime = do
     d <- manyTill anySingle (char 'Z')
-    let  mt = parseTimeM True defaultTimeLocale (iso8601DateFormat $ Just "%X") d
-    case mt of Just t  -> return $ VDatetime t
-               Nothing -> throwParser "parsing datetime failed"
+    VDatetime <$> formatParseM iso8601Format (d++"Z")
 
 -- | Attoparsec 'double' parses scientific "e" notation; reimplement according to Toml spec.
 float :: (TomlM m) => Parser m Node
diff --git a/test/Text/Toml/Parser/Spec.hs b/test/Text/Toml/Parser/Spec.hs
--- a/test/Text/Toml/Parser/Spec.hs
+++ b/test/Text/Toml/Parser/Spec.hs
@@ -6,6 +6,7 @@
 import           Data.Time.Calendar  (Day (..))
 import           Data.Time.Clock     (UTCTime (..))
 import qualified Data.Vector         as V
+import           Test.Hspec
 import           Test.Tasty          (TestTree)
 import           Test.Tasty.Hspec
 import           Text.Toml.Parser
