--- 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