diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2017 Tom Sydney Kerckhove
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,3 @@
+import Distribution.Simple
+
+main = defaultMain
diff --git a/src/Data/Validity/Time.hs b/src/Data/Validity/Time.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Validity/Time.hs
@@ -0,0 +1,11 @@
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
+
+module Data.Validity.Time
+    ( module X
+    ) where
+
+import qualified Data.Validity.Time.Calendar as X ()
+import qualified Data.Validity.Time.Clock as X ()
+import qualified Data.Validity.Time.Format as X ()
+import qualified Data.Validity.Time.LocalTime as X ()
diff --git a/src/Data/Validity/Time/Calendar.hs b/src/Data/Validity/Time/Calendar.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Validity/Time/Calendar.hs
@@ -0,0 +1,11 @@
+{-# OPTIONS_GHC -Wno-orphans #-}
+
+module Data.Validity.Time.Calendar where
+
+import Data.Validity
+
+import Data.Time.Calendar
+
+-- | Valid according to the 'Integer' it contains.
+instance Validity Day where
+    isValid (ModifiedJulianDay i) = isValid i
diff --git a/src/Data/Validity/Time/Clock.hs b/src/Data/Validity/Time/Clock.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Validity/Time/Clock.hs
@@ -0,0 +1,30 @@
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# LANGUAGE RecordWildCards #-}
+
+module Data.Validity.Time.Clock where
+
+import Data.Validity
+
+import Data.Time.Clock
+import Data.Validity.Time.Calendar ()
+
+-- | Valid according to the 'Rational' it contains.
+instance Validity UniversalTime where
+    isValid (ModJulianDate i) = isValid i
+
+-- | Valid according to the validity of the result of 'diffTimeToPicoseconds'
+instance Validity DiffTime where
+    isValid = isValid . diffTimeToPicoseconds
+
+instance Validity UTCTime where
+    isValid UTCTime {..} =
+        and
+            [ isValid utctDay
+            , isValid utctDayTime
+            , diffTimeToPicoseconds utctDayTime >= 0
+            , diffTimeToPicoseconds utctDayTime < 86401 * 10 ^ (12 :: Integer)
+            ]
+
+instance Validity NominalDiffTime where
+    isValid = isValid . (round :: NominalDiffTime -> Integer)
+    -- NominalDiffTime contains a 'Pico' but that constructorr is not exported so we can't do any better than this.
diff --git a/src/Data/Validity/Time/Format.hs b/src/Data/Validity/Time/Format.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Validity/Time/Format.hs
@@ -0,0 +1,24 @@
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# LANGUAGE RecordWildCards #-}
+
+module Data.Validity.Time.Format where
+
+import Data.Validity
+
+import Data.Time.Format
+
+import Data.Validity.Time.LocalTime ()
+
+-- | Valid according to the contained values
+instance Validity TimeLocale where
+    isValid TimeLocale {..} =
+        and
+            [ isValid wDays
+            , isValid months
+            , isValid amPm
+            , isValid dateTimeFmt
+            , isValid dateFmt
+            , isValid timeFmt
+            , isValid time12Fmt
+            , isValid knownTimeZones
+            ]
diff --git a/src/Data/Validity/Time/LocalTime.hs b/src/Data/Validity/Time/LocalTime.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Validity/Time/LocalTime.hs
@@ -0,0 +1,44 @@
+{-# OPTIONS_GHC -Wno-orphans #-}
+{-# LANGUAGE RecordWildCards #-}
+
+module Data.Validity.Time.LocalTime where
+
+import Data.Validity
+
+import Data.Time.LocalTime
+
+import Data.Validity.Time.Calendar ()
+
+-- | Valid according to the contained values.
+instance Validity TimeZone where
+    isValid TimeZone {..} =
+        isValid timeZoneMinutes &&
+        isValid timeZoneSummerOnly && isValid timeZoneName
+
+-- | Valid according to the validity of contained values and these constraints:
+--
+--  * todHour : range 0 - 23
+--  * todMin : range 0 - 59
+--  * todSec : 0 <= todSec < 61,
+instance Validity TimeOfDay where
+    isValid TimeOfDay {..} =
+        and
+            [ isValid todHour
+            , todHour >= 0
+            , todHour <= 23
+            , isValid todMin
+            , todMin >= 0
+            , todMin <= 59
+            , isValid todSec
+            , todSec >= 0
+            , todSec < 61
+            ]
+
+-- | Valid according to the validity of contained values
+instance Validity LocalTime where
+    isValid LocalTime {..} = isValid localDay && isValid localTimeOfDay
+
+-- | Valid according to the validity of contained values
+instance Validity ZonedTime where
+    isValid ZonedTime {..} =
+        isValid zonedTimeToLocalTime && isValid zonedTimeZone
diff --git a/validity-time.cabal b/validity-time.cabal
new file mode 100644
--- /dev/null
+++ b/validity-time.cabal
@@ -0,0 +1,33 @@
+name: validity-time
+version: 0.0.0.0
+cabal-version: >=1.10
+build-type: Simple
+license: MIT
+license-file: LICENSE
+copyright: Copyright: (c) 2017 Tom Sydney Kerckhove
+maintainer: syd.kerckhove@gmail.com
+homepage: https://github.com/NorfairKing/validity#readme
+synopsis: Validity instances for time
+description:
+    Please see README.md
+category: Validity
+author: Tom Sydney Kerckhove
+
+source-repository head
+    type: git
+    location: https://github.com/NorfairKing/validity
+
+library
+    exposed-modules:
+        Data.Validity.Time
+        Data.Validity.Time.Calendar
+        Data.Validity.Time.Clock
+        Data.Validity.Time.Format
+        Data.Validity.Time.LocalTime
+    build-depends:
+        base <5,
+        validity -any,
+        time -any
+    default-language: Haskell2010
+    hs-source-dirs: src
+
