Mercurial > hg > mercurial-crew-with-dirclash
diff mercurial/util.py @ 3281:45b639607e52
Merge with crew
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Fri, 06 Oct 2006 17:14:18 -0500 |
parents | c9cd63a6fce9 |
children | ec6f400cff4d |
line wrap: on
line diff
--- a/mercurial/util.py +++ b/mercurial/util.py @@ -15,7 +15,7 @@ platform-specific details from the core. from i18n import gettext as _ from demandload import * demandload(globals(), "cStringIO errno getpass popen2 re shutil sys tempfile") -demandload(globals(), "os threading time") +demandload(globals(), "os threading time calendar") # used by parsedate defaultdateformats = ('%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M', @@ -903,14 +903,22 @@ def strdate(string, format='%a %b %d %H: (string[-5] == '+' or string[-5] == '-') and string[-6].isspace()) + # 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, 0 - when = int(time.mktime(time.strptime(date, format))) + offset - return when, 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): """parse a localized time string and return a (unixtime, offset) tuple. @@ -929,7 +937,9 @@ def parsedate(string, formats=None): else: break else: - raise ValueError(_('invalid date: %r') % string) + raise ValueError(_('invalid date: %r ' + 'see hg(1) manual page for details') + % string) # validate explicit (probably user-specified) date and # time zone offset. values must fit in signed 32 bits for # current 32-bit linux runtimes. timezones go from UTC-12