Skip to content

Commit cf9f566

Browse files
committedApr 16, 2013
use timelib to parse string datetime reps
- timelib seems to be based on PHP's strtodate, which is way more flexible than python-dateutil's parser.parse() method
1 parent cfc3648 commit cf9f566

File tree

3 files changed

+7
-3
lines changed

3 files changed

+7
-3
lines changed
 

‎requirements.txt

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ nose==1.3.0
99
pyOpenSSL==0.13
1010
pymongo==2.5
1111
python-dateutil==2.1
12+
timelib==0.2.4
1213
w3lib==1.2
1314
wsgiref==0.1.2
1415
zope.interface==4.0.5

‎scrapy_proj/openrecipes/util.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import isodate
2-
from dateutil.parser import parse
2+
import timelib
33
from scrapy import log
44
import bleach
55

@@ -45,7 +45,7 @@ def get_isodate(date_str):
4545
except isodate.ISO8601Error, e:
4646
# if not, try to parse it
4747
try:
48-
iso_date = isodate.date_isoformat(parse(date_str))
48+
iso_date = isodate.date_isoformat(timelib.strtodatetime(date_str))
4949
except Exception, e:
5050
log.msg(e.message, level=log.WARNING)
5151
return None
@@ -67,7 +67,7 @@ def get_isoduration(date_str):
6767
except isodate.ISO8601Error, e:
6868
# if not, try to parse it
6969
try:
70-
delta = (parse(date_str) - parse(''))
70+
delta = (timelib.strtodatetime(date_str) - timelib.strtodatetime('now'))
7171
iso_duration = isodate.duration_isoformat(delta)
7272
except Exception, e:
7373
log.msg(e.message, level=log.WARNING)

‎scrapy_proj/tests/util_tests.py

+3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ def test_parse_isoduration_2(self):
2323
delta = datetime.timedelta(minutes=15)
2424
self.assertEqual(delta, parse_isoduration('PT15M'))
2525

26+
def test_parse_isoduration_invalid(self):
27+
self.assertEqual(None, parse_isoduration('PT1HPT1H'))
28+
2629

2730
class StripHTMLTests(unittest.TestCase):
2831

0 commit comments

Comments
 (0)
Please sign in to comment.