equal
deleted
inserted
replaced
1922 """parse a localized date/time and return a (unixtime, offset) tuple. |
1922 """parse a localized date/time and return a (unixtime, offset) tuple. |
1923 |
1923 |
1924 The date may be a "unixtime offset" string or in one of the specified |
1924 The date may be a "unixtime offset" string or in one of the specified |
1925 formats. If the date already is a (unixtime, offset) tuple, it is returned. |
1925 formats. If the date already is a (unixtime, offset) tuple, it is returned. |
1926 |
1926 |
|
1927 This function calls rawparsedate and convert ValueError to Abort for |
|
1928 functions that needs higher level exception. |
|
1929 |
1927 >>> parsedate(' today ') == parsedate(\ |
1930 >>> parsedate(' today ') == parsedate(\ |
1928 datetime.date.today().strftime('%b %d')) |
1931 datetime.date.today().strftime('%b %d')) |
1929 True |
1932 True |
1930 >>> parsedate( 'yesterday ') == parsedate((datetime.date.today() -\ |
1933 >>> parsedate( 'yesterday ') == parsedate((datetime.date.today() -\ |
1931 datetime.timedelta(days=1)\ |
1934 datetime.timedelta(days=1)\ |
1936 >>> (strnow - now) < 1 |
1939 >>> (strnow - now) < 1 |
1937 True |
1940 True |
1938 >>> tz == strtz |
1941 >>> tz == strtz |
1939 True |
1942 True |
1940 """ |
1943 """ |
|
1944 try: |
|
1945 return rawparsedate(date, formats=formats, bias=bias) |
|
1946 except ValueError as exception: |
|
1947 raise Abort(str(exception)) |
|
1948 |
|
1949 def rawparsedate(date, formats=None, bias=None): |
|
1950 """parse a localized date/time and return a (unixtime, offset) tuple. |
|
1951 |
|
1952 The date may be a "unixtime offset" string or in one of the specified |
|
1953 formats. If the date already is a (unixtime, offset) tuple, it is returned. |
|
1954 |
|
1955 See docstring of parsedate for example. |
|
1956 Raise ValueError for invalid date value. |
|
1957 """ |
1941 if bias is None: |
1958 if bias is None: |
1942 bias = {} |
1959 bias = {} |
1943 if not date: |
1960 if not date: |
1944 return 0, 0 |
1961 return 0, 0 |
1945 if isinstance(date, tuple) and len(date) == 2: |
1962 if isinstance(date, tuple) and len(date) == 2: |
1982 except (ValueError, OverflowError): |
1999 except (ValueError, OverflowError): |
1983 pass |
2000 pass |
1984 else: |
2001 else: |
1985 break |
2002 break |
1986 else: |
2003 else: |
1987 raise Abort(_('invalid date: %r') % date) |
2004 raise ValueError(_('invalid date: %r') % date) |
1988 # validate explicit (probably user-specified) date and |
2005 # validate explicit (probably user-specified) date and |
1989 # time zone offset. values must fit in signed 32 bits for |
2006 # time zone offset. values must fit in signed 32 bits for |
1990 # current 32-bit linux runtimes. timezones go from UTC-12 |
2007 # current 32-bit linux runtimes. timezones go from UTC-12 |
1991 # to UTC+14 |
2008 # to UTC+14 |
1992 if when < -0x80000000 or when > 0x7fffffff: |
2009 if when < -0x80000000 or when > 0x7fffffff: |
1993 raise Abort(_('date exceeds 32 bits: %d') % when) |
2010 raise ValueError(_('date exceeds 32 bits: %d') % when) |
1994 if offset < -50400 or offset > 43200: |
2011 if offset < -50400 or offset > 43200: |
1995 raise Abort(_('impossible time zone offset: %d') % offset) |
2012 raise ValueError(_('impossible time zone offset: %d') % offset) |
1996 return when, offset |
2013 return when, offset |
1997 |
2014 |
1998 def matchdate(date): |
2015 def matchdate(date): |
1999 """Return a function that matches a given date match specifier |
2016 """Return a function that matches a given date match specifier |
2000 |
2017 |