util.strdate: assume local time when no timezone specified
authorJose M. Prieto <jmprieto@gmx.net>
Tue, 03 Oct 2006 12:33:18 +0200
changeset 3256 e5c9a084ffe3
parent 3255 e96d2956eb4a
child 3257 c9cd63a6fce9
util.strdate: assume local time when no timezone specified
mercurial/util.py
tests/test-parse-date
tests/test-parse-date.out
--- a/mercurial/util.py	Tue Oct 03 12:33:14 2006 +0200
+++ b/mercurial/util.py	Tue Oct 03 12:33:18 2006 +0200
@@ -909,9 +909,15 @@
         tz = int(tz)
         offset = - 3600 * (tz / 100) - 60 * (tz % 100)
     else:
-        date, offset = string, 0
-    localunixtime = int(calendar.timegm(time.strptime(date, format)))
-    unixtime = localunixtime + offset
+        date, offset = string, None
+    timetuple = time.strptime(date, format)
+    localunixtime = int(calendar.timegm(timetuple))
+    if offset is None:
+        # local timezone
+        unixtime = int(time.mktime(timetuple))
+        offset = unixtime - localunixtime
+    else:
+        unixtime = localunixtime + offset
     return unixtime, offset
 
 def parsedate(string, formats=None):
--- a/tests/test-parse-date	Tue Oct 03 12:33:14 2006 +0200
+++ b/tests/test-parse-date	Tue Oct 03 12:33:18 2006 +0200
@@ -21,13 +21,13 @@
 # PST=UTC-8 / PDT=UTC-7
 hg debugrebuildstate
 echo "a" > a
-hg ci -d "2006-07-15 13:30" -m "summer@UTC"
+hg ci -d "2006-07-15 13:30" -m "summer@UTC-7"
 hg debugrebuildstate
 echo "b" > a
 hg ci -d "2006-07-15 13:30 +0500" -m "summer@UTC+5"
 hg debugrebuildstate
 echo "c" > a
-hg ci -d "2006-01-15 13:30" -m "winter@UTC"
+hg ci -d "2006-01-15 13:30" -m "winter@UTC-8"
 hg debugrebuildstate
 echo "d" > a
 hg ci -d "2006-01-15 13:30 +0500" -m "winter@UTC+5"
--- a/tests/test-parse-date.out	Tue Oct 03 12:33:14 2006 +0200
+++ b/tests/test-parse-date.out	Tue Oct 03 12:33:18 2006 +0200
@@ -13,9 +13,9 @@
 transaction abort!
 rollback completed
 Sun Jan 15 13:30:00 2006 +0500
-Sun Jan 15 13:30:00 2006 +0000
+Sun Jan 15 13:30:00 2006 -0800
 Sat Jul 15 13:30:00 2006 +0500
-Sat Jul 15 13:30:00 2006 +0000
+Sat Jul 15 13:30:00 2006 -0700
 Sun Jun 11 00:26:40 2006 -0400
 Sat Apr 15 13:30:00 2006 +0200
 Sat Apr 15 13:30:00 2006 +0000