diff options
| author | Paul Ganssle <paul@ganssle.io> | 2017-11-12 11:52:01 -0500 |
|---|---|---|
| committer | Paul Ganssle <paul@ganssle.io> | 2017-11-13 16:54:50 -0500 |
| commit | 2304eaf0cd1b99b7def5df68e6afae9b99c33133 (patch) | |
| tree | 3b25651193010dd82805da313c76eacebb310d92 /dateutil/parser/_parser.py | |
| parent | bb98d949970561013e5824472f9ded70b63b5505 (diff) | |
| download | dateutil-git-2304eaf0cd1b99b7def5df68e6afae9b99c33133.tar.gz | |
Allow ambiguous datetimes when passing tzinfos
Diffstat (limited to 'dateutil/parser/_parser.py')
| -rw-r--r-- | dateutil/parser/_parser.py | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/dateutil/parser/_parser.py b/dateutil/parser/_parser.py index f11ed2d..0c72b36 100644 --- a/dateutil/parser/_parser.py +++ b/dateutil/parser/_parser.py @@ -626,14 +626,12 @@ class parser(object): tzinfos and res.tzname in tzinfos): tzinfo = self._build_tzinfo(tzinfos, res.tzname, res.tzoffset) ret = ret.replace(tzinfo=tzinfo) + ret = self._assign_tzname(ret, res.tzname) elif res.tzname and res.tzname in time.tzname: ret = ret.replace(tzinfo=tz.tzlocal()) # Handle ambiguous local datetime - if ret.tzname() != res.tzname: - new_ret = tz.enfold(ret, fold=1) - if new_ret.tzname() == res.tzname: - ret = new_ret + ret = self._assign_tzname(ret, res.tzname) elif res.tzoffset == 0: ret = ret.replace(tzinfo=tz.tzutc()) elif res.tzoffset: @@ -1146,6 +1144,14 @@ class parser(object): "tz string, or int offset.") return tzinfo + def _assign_tzname(self, dt, tzname): + if dt.tzname() != tzname: + new_dt = tz.enfold(dt, fold=1) + if new_dt.tzname() == tzname: + return new_dt + + return dt + DEFAULTPARSER = parser() |
