From 5988e988f5882300e55316abadce0a443474e458 Mon Sep 17 00:00:00 2001 From: Igor Date: Wed, 11 Oct 2017 17:18:30 +0300 Subject: Be able to recognize time zones with fractional hours --- src/isodate/isotzinfo.py | 2 +- src/isodate/tests/test_datetime.py | 10 ++++++++++ src/isodate/tests/test_time.py | 6 ++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/isodate/isotzinfo.py b/src/isodate/isotzinfo.py index 263afd7..a805ebe 100644 --- a/src/isodate/isotzinfo.py +++ b/src/isodate/isotzinfo.py @@ -35,7 +35,7 @@ from isodate.isoerror import ISO8601Error from isodate.tzinfo import UTC, FixedOffset, ZERO TZ_REGEX = r"(?P(Z|(?P[+-])"\ - r"(?P[0-9]{2})(:(?P[0-9]{2}))?)?)" + r"(?P[0-9]{2})(:?(?P[0-9]{2}))?)?)" TZ_RE = re.compile(TZ_REGEX) diff --git a/src/isodate/tests/test_datetime.py b/src/isodate/tests/test_datetime.py index 3cdfe42..85c822f 100644 --- a/src/isodate/tests/test_datetime.py +++ b/src/isodate/tests/test_datetime.py @@ -63,6 +63,16 @@ TEST_CASES = [('19850412T1015', datetime(1985, 4, 12, 10, 15), '+0400'),), DATE_EXT_WEEK_COMPLETE + 'T' + TIME_EXT_MINUTE + TZ_HOUR, '1985-W15-5T10:15+04'), + ('1985-W15-5T10:15-0430', + datetime(1985, 4, 12, 10, 15, tzinfo=FixedOffset(-4, -30, + '-0430'),), + DATE_EXT_WEEK_COMPLETE + 'T' + TIME_EXT_MINUTE + TZ_BAS, + '1985-W15-5T10:15-0430'), + ('1985-W15-5T10:15+04:45', + datetime(1985, 4, 12, 10, 15, tzinfo=FixedOffset(4, 45, + '+04:45'),), + DATE_EXT_WEEK_COMPLETE + 'T' + TIME_EXT_MINUTE + TZ_EXT, + '1985-W15-5T10:15+04:45'), ('20110410T101225.123000Z', datetime(2011, 4, 10, 10, 12, 25, 123000, tzinfo=UTC), DATE_BAS_COMPLETE + 'T' + TIME_BAS_COMPLETE + ".%f" + TZ_BAS, diff --git a/src/isodate/tests/test_time.py b/src/isodate/tests/test_time.py index 7dfd0c0..fe96dab 100644 --- a/src/isodate/tests/test_time.py +++ b/src/isodate/tests/test_time.py @@ -83,6 +83,12 @@ TEST_CASES = [('232050', time(23, 20, 50), TIME_BAS_COMPLETE + TZ_BAS), ('15:27:46-05', time(15, 27, 46, tzinfo=FixedOffset(-5, -0, '-05:00')), TIME_EXT_COMPLETE + TZ_HOUR), + ('15:27:46-05:30', time(15, 27, 46, + tzinfo=FixedOffset(-5, -30, '-05:30')), + TIME_EXT_COMPLETE + TZ_EXT), + ('15:27:46-0545', time(15, 27, 46, + tzinfo=FixedOffset(-5, -45, '-0545')), + TIME_EXT_COMPLETE + TZ_BAS), ('1:17:30', None, TIME_EXT_COMPLETE)] -- cgit v1.2.1