diff --git a/Data/Time/Parse.hsc b/Data/Time/Parse.hsc
--- a/Data/Time/Parse.hsc
+++ b/Data/Time/Parse.hsc
@@ -35,6 +35,10 @@
 import qualified Data.ByteString.Internal as BI
 import qualified Data.ByteString.Lazy.Char8 as L
 import qualified Data.ByteString.Lazy.Internal as LI
+import qualified Data.Text as T
+import qualified Data.Text.Encoding as TE
+import qualified Data.Text.Lazy as TL
+import qualified Data.Text.Lazy.Encoding as TLE
 
 #include <time.h>
 #include "hstrptime.h"
@@ -53,6 +57,7 @@
         (t, n) <- ff s
         return (t, drop n s)
       where ff = strptime_ f
+
 instance Strptime L.ByteString where
     strptime f = \s -> do
         (t, n) <- ff s
@@ -65,6 +70,18 @@
         return (t, S.drop (fromIntegral n) s)
       where ff = strptime_ f
 
+instance  Strptime T.Text where
+    strptime f = \s -> do
+        (t, n) <- ff s
+        return (t, T.drop (fromIntegral n) s)
+      where ff = strptime_ f
+
+instance  Strptime TL.Text where
+    strptime f = \s -> do
+        (t, n) <- ff s
+        return (t, TL.drop (fromIntegral n) s)
+      where ff = strptime_ f
+
 class Strptime_ a where
     strptime_ :: a -> a -> Maybe (LocalTime, Int)
 
@@ -73,6 +90,12 @@
 
 instance Strptime_ L.ByteString where
     strptime_ f = let pf = S.concat (L.toChunks f) in \s -> strptime_ pf (S.concat . L.toChunks $ s)
+
+instance Strptime_ T.Text where
+    strptime_ f = let pf = TE.encodeUtf8 f in \s -> strptime_ pf (TE.encodeUtf8 s)
+
+instance Strptime_ TL.Text where
+    strptime_ f = let pf = TLE.encodeUtf8 f in \s -> strptime_ pf (TLE.encodeUtf8 s)
 
 instance Strptime_ S.ByteString where
     strptime_ f = U.unsafePerformIO $ do
diff --git a/cbits/hstrptime.c b/cbits/hstrptime.c
--- a/cbits/hstrptime.c
+++ b/cbits/hstrptime.c
@@ -546,7 +546,7 @@
                     if (val % 100 >= 60) return NULL;
                     val = (val / 100) * 100 + ((val % 100) * 50) / 30;
                 }
-                if (val > 1200) return NULL;
+                if ((neg && val > 1200) || (!neg && val > 1400)) return NULL;
                 off = (val * 3600) / 100;
                 if (neg) off = -off;
                 *poffset = off;
@@ -1068,7 +1068,7 @@
                     if (val % 100 >= 60) return NULL;
                     val = (val / 100) * 100 + ((val % 100) * 50) / 30;
                 }
-                if (val > 1200) return NULL;
+                if ((neg && val > 1200) || (!neg && val > 1400)) return NULL;
                 off = (val * 3600) / 100;
                 if (neg) off = -off;
                 *poffset = off;
diff --git a/strptime.cabal b/strptime.cabal
--- a/strptime.cabal
+++ b/strptime.cabal
@@ -1,6 +1,6 @@
 Name: strptime
 Category: System, Data, Parsing
-Version: 1.0.8
+Version: 1.0.10
 Cabal-version: >= 1.2
 Build-type: Simple
 Copyright: Eugene Kirpichov
@@ -27,7 +27,7 @@
 Flag split-base
 
 Library
-  Build-Depends: time, bytestring
+  Build-Depends: time, bytestring, text
   C-sources: cbits/hstrptime.c
   GHC-Options: -O2
   Include-dirs: include
