diff --git a/box-csv.cabal b/box-csv.cabal
--- a/box-csv.cabal
+++ b/box-csv.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.4
 name: box-csv
-version: 0.0.1
+version: 0.0.2
 synopsis: See readme.md
 description: See readme.md for description.
 category: project
@@ -30,16 +30,15 @@
     -Wincomplete-uni-patterns
     -Wredundant-constraints
   build-depends:
-    base >=4.7 && <5,
     attoparsec >= 0.13,
-    box >= 0.4 && < 0.6,
-    foldl >= 1.4,
+    base >=4.7 && <5,
+    box >= 0.6 && < 0.7,
     generic-lens,
     lens >= 4.19,
+    numhask >= 0.6 && < 0.7,
+    scientific >= 0.3,
     text >= 1.2,
     time >= 1.9,
-    scientific >= 0.3,
-    numhask >= 0.6
   exposed-modules:
     Box.Csv
   other-modules:
@@ -64,5 +63,5 @@
   build-depends:
     base >=4.7 && <5,
     doctest >= 0.16,
-    numhask >= 0.6
+    numhask >= 0.6 && < 0.7
   default-language: Haskell2010
diff --git a/src/Box/Csv.hs b/src/Box/Csv.hs
--- a/src/Box/Csv.hs
+++ b/src/Box/Csv.hs
@@ -30,6 +30,9 @@
     scis,
     ints,
     doubles,
+    day',
+    tod',
+    localtime',
   )
 where
 
@@ -40,6 +43,7 @@
 import Data.Scientific
 import qualified Data.Text as Text
 import NumHask.Prelude
+import Data.Time
 
 -- $setup
 -- >>> :set -XOverloadedStrings
@@ -185,6 +189,39 @@
 double' :: Char -> A.Parser Double
 double' c = A.double <* A.char c
 
+-- | Day parser, consumes separator
+--
+-- >>> A.parse (day' ',') "2020-07-01,ok"
+-- Done "ok" 2020-07-01
+day' :: Char -> A.Parser Day
+day' c = do
+  d <- A.takeTill (== c)
+  d' <- parseTimeM False defaultTimeLocale "%F" (unpack d)
+  _ <- A.char c
+  pure d'
+
+-- | TimeOfDay parser, consumes separator
+--
+-- >>> A.parse (tod' ',') "23:52:05.221109,ok"
+-- Done "ok" 23:52:05.221109
+tod' :: Char -> A.Parser TimeOfDay
+tod' c = do
+  d <- A.takeTill (== c)
+  d' <- parseTimeM False defaultTimeLocale "%T%Q" (unpack d)
+  _ <- A.char c
+  pure d'
+
+-- | TimeOfDay parser, consumes separator
+--
+-- >>> A.parse (localtime' ',') "Jun 24 8:24AM,ok"
+-- Done "ok" 2020-06-24 08:24:00
+localtime' :: Char -> A.Parser LocalTime
+localtime' c = do
+  d <- A.takeTill (== c)
+  d' <- parseTimeM False defaultTimeLocale "%Y %b %e %k:%M%p" (unpack ("2020 " <> d))
+  _ <- A.char c
+  pure d'
+
 -- * Block list parsers
 -- | Parser for a csv row of [Text].
 -- TODO: deal with potential for an extra '\r'
@@ -194,7 +231,7 @@
 --
 fields :: Char -> A.Parser [Text]
 fields c =
-  field_ c `A.sepBy1` (sep c)
+  field_ c `A.sepBy1` sep c
 
 -- | parser for a csv row of [Scientific]
 --
