|  | 
| 7 | 7 | import time | 
| 8 | 8 | import calendar | 
| 9 | 9 | 
 | 
| 10 |  | -from datetime import datetime, timezone | 
|  | 10 | +from datetime import datetime, timezone, timedelta | 
| 11 | 11 | from email.utils import parsedate, formatdate | 
| 12 | 12 | 
 | 
| 13 | 13 | #================================================================= | 
|  | 
| 22 | 22 | PAD_14_DOWN = '10000101000000' | 
| 23 | 23 | PAD_14_UP =   '29991231235959' | 
| 24 | 24 | PAD_6_UP =    '299912' | 
| 25 |  | -PAD_MICRO =   '000000' | 
| 26 | 25 | 
 | 
| 27 | 26 | 
 | 
| 28 | 27 | def iso_date_to_datetime(string, tz_aware=False): | 
| @@ -53,22 +52,17 @@ def iso_date_to_datetime(string, tz_aware=False): | 
| 53 | 52 | 
 | 
| 54 | 53 |     >>> iso_date_to_datetime('2013-12-26T10:11:12.000000Z', tz_aware=True) | 
| 55 | 54 |     datetime.datetime(2013, 12, 26, 10, 11, 12, tzinfo=datetime.timezone.utc) | 
| 56 |  | -    """ | 
| 57 |  | - | 
| 58 |  | -    nums = DATE_TIMESPLIT.split(string) | 
| 59 |  | -    if nums[-1] == '': | 
| 60 |  | -        nums = nums[:-1] | 
| 61 |  | - | 
| 62 |  | -    if len(nums) == 7: | 
| 63 |  | -        nums[6] = nums[6][:6] | 
| 64 |  | -        nums[6] += PAD_MICRO[len(nums[6]):] | 
|  | 55 | +     | 
|  | 56 | +    >>> iso_date_to_datetime('2013-12-26T10:11:12.000000+02:00', tz_aware=True) | 
|  | 57 | +    datetime.datetime(2013, 12, 26, 10, 11, 12, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))) | 
| 65 | 58 | 
 | 
| 66 |  | -    tzinfo = None | 
| 67 |  | -    if tz_aware: | 
| 68 |  | -        tzinfo = timezone.utc | 
| 69 |  | - | 
| 70 |  | -    the_datetime = datetime(*(int(num) for num in nums), tzinfo=tzinfo) | 
| 71 |  | -    return the_datetime | 
|  | 59 | +     | 
|  | 60 | +    >>> iso_date_to_datetime('2013-12-26T10:11:12.000000-02:00', tz_aware=True) == datetime(2013, 12, 26, 10, 11, 12, tzinfo=timezone(timedelta(seconds=-7200))) | 
|  | 61 | +    True | 
|  | 62 | +    """ | 
|  | 63 | +    if not tz_aware: | 
|  | 64 | +        return datetime.fromisoformat(string).replace(tzinfo=None) | 
|  | 65 | +    return datetime.fromisoformat(string) | 
| 72 | 66 | 
 | 
| 73 | 67 | 
 | 
| 74 | 68 | def http_date_to_datetime(string, tz_aware=False): | 
|  | 
0 commit comments