parsedate: add UTC and GMT timezones
authorMatt Mackall <mpm@selenic.com>
Wed, 06 Dec 2006 13:13:42 -0600
changeset 3809 4d93b37b5963
parent 3808 d6529582942a
child 3810 1d571ed26eed
parsedate: add UTC and GMT timezones
mercurial/util.py
--- a/mercurial/util.py	Wed Dec 06 13:13:31 2006 -0600
+++ b/mercurial/util.py	Wed Dec 06 13:13:42 2006 -0600
@@ -1061,18 +1061,20 @@
 def strdate(string, format='%a %b %d %H:%M:%S %Y'):
     """parse a localized time string and return a (unixtime, offset) tuple.
     if the string cannot be parsed, ValueError is raised."""
-    def hastimezone(string):
-        return (string[-4:].isdigit() and
-               (string[-5] == '+' or string[-5] == '-') and
-               string[-6].isspace())
+    def timezone(string):
+        tz = string.split()[-1]
+        if tz[0] in "+-" and len(tz) == 5 and tz[1:].isdigit():
+            tz = int(tz)
+            offset = - 3600 * (tz / 100) - 60 * (tz % 100)
+            return offset
+        if tz == "GMT" or tz == "UTC":
+            return 0
+        return None
 
     # NOTE: unixtime = localunixtime + offset
-    if hastimezone(string):
-        date, tz = string[:-6], string[-5:]
-        tz = int(tz)
-        offset = - 3600 * (tz / 100) - 60 * (tz % 100)
-    else:
-        date, offset = string, None
+    offset, date = timezone(string), string
+    if offset != None:
+        date = " ".join(string.split()[:-1])
 
     # add missing elements
     if '%y' not in format.lower():