use dateutil to parse datetime strings (#9640)
This commit is contained in:
parent
f45bb8b2d0
commit
9143056569
|
@ -0,0 +1 @@
|
||||||
|
python-dateutil python-dateutil
|
|
@ -6,10 +6,11 @@ import importlib
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
from xml.etree import ElementTree as ET
|
from xml.etree import ElementTree as ET
|
||||||
import requests
|
import requests
|
||||||
|
import dateutil.parser
|
||||||
|
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.template.loader import render_to_string
|
from django.template.loader import render_to_string
|
||||||
from django.utils.timezone import make_aware, utc, now, make_naive
|
from django.utils.timezone import make_aware, utc, now, make_naive, is_aware
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
import lasso
|
import lasso
|
||||||
|
|
||||||
|
@ -115,13 +116,13 @@ def iso8601_to_datetime(date_string):
|
||||||
value.
|
value.
|
||||||
|
|
||||||
This function ignores the sub-second resolution'''
|
This function ignores the sub-second resolution'''
|
||||||
m = re.match(r'(\d+-\d+-\d+T\d+:\d+:\d+)(?:\.\d+)?Z$', date_string)
|
dt = dateutil.parser.parse(date_string)
|
||||||
if not m:
|
if is_aware(dt):
|
||||||
raise ValueError('Invalid ISO8601 date')
|
if not settings.USE_TZ:
|
||||||
tm = time.strptime(m.group(1)+'Z', "%Y-%m-%dT%H:%M:%SZ")
|
dt = make_naive(dt)
|
||||||
dt = make_aware(datetime.datetime.fromtimestamp(time.mktime(tm)), utc)
|
else:
|
||||||
if not settings.USE_TZ:
|
if settings.USE_TZ:
|
||||||
dt = make_naive(dt)
|
dt = make_aware(dt)
|
||||||
return dt
|
return dt
|
||||||
|
|
||||||
def get_seconds_expiry(datetime_expiry):
|
def get_seconds_expiry(datetime_expiry):
|
||||||
|
|
Loading…
Reference in New Issue