From 5fdb217d21e1fe6f8eefd0355b90af66319d947f Mon Sep 17 00:00:00 2001 From: Joseph Kahn Date: Tue, 2 Dec 2014 21:48:33 -0500 Subject: [PATCH 1/4] bug fix and possible fix --- dateparser/date.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/dateparser/date.py b/dateparser/date.py index 1d60bff86..7d3a1df7f 100644 --- a/dateparser/date.py +++ b/dateparser/date.py @@ -167,10 +167,9 @@ def get_date_data(self, date_string, date_formats=None): return data_from_freshness date_string = sanitize_date(date_string) - # If known formats are provided, try them first if date_formats is not None: - date_obj = parse_with_formats(date_string, date_formats, + date_obj = parse_with_formats(date_string, list(date_formats), alt_parser=self.date_parser) if date_obj: data['date_obj'] = date_obj @@ -178,8 +177,7 @@ def get_date_data(self, date_string, date_formats=None): try: # Automatically detect date format - date_obj = self.date_parser.parse(date_string) - data['date_obj'] = date_obj.replace(tzinfo=None) + data['date_obj'] = self.date_parser.parse(date_string) return data except ValueError: # Try with hardcoded date formats From 2066015d1a415d76a1570ca9bee17d160fc9cb68 Mon Sep 17 00:00:00 2001 From: Joseph Kahn Date: Tue, 2 Dec 2014 21:58:30 -0500 Subject: [PATCH 2/4] accidentally got rid of a line --- dateparser/date.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dateparser/date.py b/dateparser/date.py index 7d3a1df7f..5d3e776bd 100644 --- a/dateparser/date.py +++ b/dateparser/date.py @@ -167,6 +167,7 @@ def get_date_data(self, date_string, date_formats=None): return data_from_freshness date_string = sanitize_date(date_string) + # If known formats are provided, try them first if date_formats is not None: date_obj = parse_with_formats(date_string, list(date_formats), From 723f96b20ab9239e63f338b4e3e4c4f0e4d5ab31 Mon Sep 17 00:00:00 2001 From: Joseph Kahn Date: Sat, 17 Jan 2015 15:04:45 -0500 Subject: [PATCH 3/4] adding a test --- tests/test_date.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/test_date.py b/tests/test_date.py index 6b32a180c..f2e4f30b8 100644 --- a/tests/test_date.py +++ b/tests/test_date.py @@ -263,6 +263,11 @@ def test_should_enable_redetection_for_multiple_languages(self): date_data = parser.get_date_data(date_string) self.assertEqual(correct_date.date(), date_data['date_obj'].date()) + def test_get_date_data_should_not_strip_timezone_info(self): + date_string_with_tz_info = '2014-10-09T17:57:39+00:00' + date_data = self.parser.get_date_data(date_string_with_tz_info) + self.assertTrue(hasattr(date_data['date_obj'], 'tzinfo')) + if __name__ == '__main__': unittest.main() From 7f60e017eaa99dea7c96f82a118ec4716c4c04d8 Mon Sep 17 00:00:00 2001 From: Joseph Kahn Date: Wed, 18 Feb 2015 21:33:17 -0500 Subject: [PATCH 4/4] fixing list check --- dateparser/date.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dateparser/date.py b/dateparser/date.py index 26089c47b..fa340eab4 100644 --- a/dateparser/date.py +++ b/dateparser/date.py @@ -175,7 +175,11 @@ def _try_given_formats(self): if not self.date_formats: return - return parse_with_formats(self._get_translated_date_with_formatting(), list(self.date_formats)) + date_formats = self.date_formats + if not isinstance(self.date_formats, (list, tuple, collections.Set)): + date_formats = [self.date_formats] + + return parse_with_formats(self._get_translated_date_with_formatting(), date_formats) def _try_hardcoded_formats(self): hardcoded_date_formats = [