From d856efa1dd81f45b1d2400e4304c35d9ec68b76f Mon Sep 17 00:00:00 2001 From: Joseph Kahn Date: Tue, 10 Sep 2019 12:20:34 -0400 Subject: [PATCH 1/3] Update parser.py --- arrow/parser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arrow/parser.py b/arrow/parser.py index f1469a00b..2720d3c18 100644 --- a/arrow/parser.py +++ b/arrow/parser.py @@ -45,7 +45,7 @@ class DateTimeParser(object): _TZ_NAME_RE = re.compile(r"\w[\w+\-/]+") # NOTE: timestamps cannot be parsed from natural language strings (by removing the ^...$) because it will # break cases like "15 Jul 2000" and a format list (see issue #447) - _TIMESTAMP_RE = re.compile(r"^\d+\.?\d+$") + _TIMESTAMP_RE = re.compile(r"^-?\d+\.?\d+$") _TIME_RE = re.compile(r"^(\d{2})(?:\:?(\d{2}))?(?:\:?(\d{2}))?(?:([\.\,])(\d+))?$") _BASE_INPUT_RE_MAP = { From 45d12d46dc9a18e9868b5fe5b509d164db430c8c Mon Sep 17 00:00:00 2001 From: Joseph Kahn Date: Tue, 10 Sep 2019 12:23:50 -0400 Subject: [PATCH 2/3] Update parser_tests.py --- tests/parser_tests.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/parser_tests.py b/tests/parser_tests.py index 36bafcc9d..cbaeb27a7 100644 --- a/tests/parser_tests.py +++ b/tests/parser_tests.py @@ -224,6 +224,12 @@ def test_parse_timestamp(self): self.parser.parse("{:f}123456".format(float_timestamp), "X"), self.expected ) + negative_timestamp = -1565358758 + self.expected = datetime.fromtimestamp(negative_timestamp, tz=tz_utc) + self.assertEqual( + self.parser.parse("{:d}".format(negative_timestamp), "X"), self.expected + ) + # NOTE: timestamps cannot be parsed from natural language strings (by removing the ^...$) because it will # break cases like "15 Jul 2000" and a format list (see issue #447) with self.assertRaises(ParserError): From 1974316d8930c01abf57aee68a294bd0fd37b0b6 Mon Sep 17 00:00:00 2001 From: Joseph Kahn Date: Tue, 10 Sep 2019 12:26:51 -0400 Subject: [PATCH 3/3] linting --- tests/parser_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/parser_tests.py b/tests/parser_tests.py index cbaeb27a7..0fe754331 100644 --- a/tests/parser_tests.py +++ b/tests/parser_tests.py @@ -228,7 +228,7 @@ def test_parse_timestamp(self): self.expected = datetime.fromtimestamp(negative_timestamp, tz=tz_utc) self.assertEqual( self.parser.parse("{:d}".format(negative_timestamp), "X"), self.expected - ) + ) # NOTE: timestamps cannot be parsed from natural language strings (by removing the ^...$) because it will # break cases like "15 Jul 2000" and a format list (see issue #447)