diff --git a/dateparser/date.py b/dateparser/date.py index 3ae1b62c0..fa340eab4 100644 --- a/dateparser/date.py +++ b/dateparser/date.py @@ -165,7 +165,7 @@ def _try_dateutil_parser(self): try: date_obj = date_parser.parse(self._get_translated_date()) return { - 'date_obj': date_obj.replace(tzinfo=None), + 'date_obj': date_obj, 'period': 'day', } except ValueError: @@ -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(), 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 = [ diff --git a/tests/test_date.py b/tests/test_date.py index 305ef5ae7..106d13144 100644 --- a/tests/test_date.py +++ b/tests/test_date.py @@ -276,6 +276,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')) + def test_should_parse_date_with_timezones_using_format(self): date_string = "2014/11/17 14:56 EDT" date_format = "%Y/%m/%d %H:%M EDT"