]> gitweb @ CieloNegro.org - time-http.git/blobdiff - Data/Time/RFC822.hs
HTTP
[time-http.git] / Data / Time / RFC822.hs
index 4b3d91cf8799714e45eb15c1dfe16e5b77c72d22..1352e6d58428e12c760cda253de160db92956590 100644 (file)
@@ -1,6 +1,9 @@
 module Data.Time.RFC822
     ( format
     , parse
+
+    -- private
+    , showRFC822TimeZone
     )
     where
 
@@ -66,26 +69,19 @@ format zonedTime
                , ":"
                , show2 (floor (todSec timeOfDay))
                , " "
-               , showTZ timeZone
+               , showRFC822TimeZone timeZone
                ]
 
-showTZ :: TimeZone -> String
-showTZ tz
-    = case timeZoneMinutes tz of
-        offset | offset <  0 -> '-' : showTZ' (negate offset)
-               | otherwise   -> '+' : showTZ' offset
-    where
-      showTZ' offset
-          = let h = offset `div` 60
-                m = offset - h * 60
-            in
-              concat [show2 h, show2 m]
+showRFC822TimeZone :: TimeZone -> String
+showRFC822TimeZone tz
+    | timeZoneMinutes tz == 0 = "GMT"
+    | otherwise               = show4digitsTZ tz
 
 parse :: String -> Maybe ZonedTime
 parse src = case P.parse p "" src of
               Right zt -> Just zt
               Left  _  -> Nothing
     where
-      p = do zt <- parser
+      p = do zt <- rfc822DateAndTime
              _  <- P.eof
              return zt