comparison mercurial/util.py @ 6230:c7253d1a774e

dates: Fix bare times to be relative to "today"
author Matt Mackall <mpm@selenic.com>
date Tue, 11 Mar 2008 17:42:51 -0500
parents c3182eeb70ea
children d036ea711140
comparison
equal deleted inserted replaced
6229:c3182eeb70ea 6230:c7253d1a774e
1584 The date may be a "unixtime offset" string or in one of the specified 1584 The date may be a "unixtime offset" string or in one of the specified
1585 formats. If the date already is a (unixtime, offset) tuple, it is returned. 1585 formats. If the date already is a (unixtime, offset) tuple, it is returned.
1586 """ 1586 """
1587 if not date: 1587 if not date:
1588 return 0, 0 1588 return 0, 0
1589 if type(date) is type((0, 0)) and len(date) == 2: 1589 if isinstance(date, tuple) and len(date) == 2:
1590 return date 1590 return date
1591 if not formats: 1591 if not formats:
1592 formats = defaultdateformats 1592 formats = defaultdateformats
1593 date = date.strip() 1593 date = date.strip()
1594 try: 1594 try:
1600 now = makedate() 1600 now = makedate()
1601 for part in "d mb yY HI M S".split(): 1601 for part in "d mb yY HI M S".split():
1602 if part not in defaults: 1602 if part not in defaults:
1603 if part[0] in "HMS": 1603 if part[0] in "HMS":
1604 defaults[part] = "00" 1604 defaults[part] = "00"
1605 elif part[0] in "dm":
1606 defaults[part] = "1"
1607 else: 1605 else:
1608 defaults[part] = datestr(now, "%" + part[0]) 1606 defaults[part] = datestr(now, "%" + part[0])
1609 1607
1610 for format in formats: 1608 for format in formats:
1611 try: 1609 try:
1638 '>{date}' on or after a given date 1636 '>{date}' on or after a given date
1639 1637
1640 """ 1638 """
1641 1639
1642 def lower(date): 1640 def lower(date):
1643 return parsedate(date, extendeddateformats)[0] 1641 d = dict(mb="1", d="1")
1642 return parsedate(date, extendeddateformats, d)[0]
1644 1643
1645 def upper(date): 1644 def upper(date):
1646 d = dict(mb="12", HI="23", M="59", S="59") 1645 d = dict(mb="12", HI="23", M="59", S="59")
1647 for days in "31 30 29".split(): 1646 for days in "31 30 29".split():
1648 try: 1647 try: