+instance Arbitrary Day where
+ arbitrary = ModifiedJulianDay <$> arbitrary
+
+instance Arbitrary TimeOfDay where
+ arbitrary
+ = do h ← choose (0, 23)
+ m ← choose (0, 59)
+ s ← choose (0, 60)
+ return $ TimeOfDay h m (fromIntegral (s ∷ Int))
+
+instance Arbitrary LocalTime where
+ arbitrary = LocalTime <$> arbitrary ⊛ arbitrary
+
+instance Eq ZonedTime where
+ a == b = zonedTimeToUTC a ≡ zonedTimeToUTC b
+
+instance Arbitrary TimeZone where
+ arbitrary
+ = do m ← choose (-1439, 1439)
+ s ← arbitrary
+ n ← arbitrary
+ return $ TimeZone m s n
+
+instance Arbitrary ZonedTime where
+ arbitrary = ZonedTime <$> arbitrary ⊛ arbitrary
+