- # FIXME Error if date in line (dateLineCross)
- return map(lambda z: time(*map(int, z.split(':'))), wrap(y, 5))
- else:
- return []
+ dtregex = {'date' : '\d\d\.\d\d',
+ 'time': '\d\d:\d\d'}
+
+ regex = "\s*(?P<date1>{date})?\s*(?P<time1>{time})\s*(?P<date2>{date})?\s*(?P<time2>{time})\s*".format(**dtregex)
+ ma = re.match(regex, y)
+
+ if not ma:
+ return []
+
+ gr = ma.groupdict()
+
+ def extract_datetime(gr, n):
+ if 'date%d' % n in gr and gr['date%d' % n]:
+ if gr['time%d' % n] == '24:00':
+ gr['time%d' % n] = '0:00'
+ from_dtime = datetime.strptime(str(datetime.today().year) + gr['date%d' % n] + gr['time%d' % n], '%Y%d.%m.%H:%M')
+ else:
+ d = datetime.today().date()
+ # Strange times possible at wienerlinien
+ if gr['time%d' % n] == '24:00':
+ gr['time%d' % n] = '0:00'
+ d += timedelta(days=1)
+ t = datetime.strptime(gr['time%d' % n], '%H:%M').time()
+
+ return datetime.combine(d, t)
+
+ # detail mode
+ from_dtime = extract_datetime(gr, 1)
+ to_dtime = extract_datetime(gr, 2)
+
+ return [from_dtime, to_dtime]