From 2a0ae0208821b86afbc553b324184b6b17c1730f Mon Sep 17 00:00:00 2001 From: Doug Blank Date: Fri, 21 May 2010 11:15:08 +0000 Subject: [PATCH] 3982: One more date-time format - Database Timestamp (ISO) format, by Yenidai svn: r15436 --- src/DateHandler/_DateParser.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/DateHandler/_DateParser.py b/src/DateHandler/_DateParser.py index f675e4a6d..089e703f3 100644 --- a/src/DateHandler/_DateParser.py +++ b/src/DateHandler/_DateParser.py @@ -374,6 +374,7 @@ class DateParser(object): re.IGNORECASE) self._numeric = re.compile("((\d+)[/\.]\s*)?((\d+)[/\.]\s*)?(\d+)\s*$") self._iso = re.compile("(\d+)(/(\d+))?-(\d+)-(\d+)\s*$") + self._isotimestamp = re.compile("^\s*?(\d{4})([01]\d)([0123]\d)(?:(?:[012]\d[0-5]\d[0-5]\d)|(?:\s+[012]\d:[0-5]\d(?::[0-5]\d)?))?\s*?$") self._rfc = re.compile("(%s,)?\s+(\d|\d\d)\s+%s\s+(\d+)\s+\d\d:\d\d(:\d\d)?\s+(\+|-)\d\d\d\d" % (self._rfc_day_str, self._rfc_mon_str)) @@ -505,6 +506,19 @@ class DateParser(object): else: return (d, m, y, False) + # Database datetime format, used in ex. MSSQL + # YYYYMMDD HH:MM:SS or YYYYMMDD or YYYYMMDDHHMMSS + match = self._isotimestamp.match(text) + if match: + groups = match.groups() + y = self._get_int(groups[0]) + m = self._get_int(groups[1]) + d = self._get_int(groups[2]) + value = (d, m, y, False) + if not check((d, m, y)): + value = Date.Empty + return value + match = self._rfc.match(text) if match: groups = match.groups()