def datetime(self, filler=None): if filler is not None: fz = fuzzydate.merge(filler,self) else: fz = self dt = datetime.datetime.combine(fz.date(), fz.time()) if fz.tzname is not None: # convert to utc delta = tzabbr.abbr_to_delta(fz.tzname) if delta is None: # TODO: Think this through properly return None dt -= delta return dt
def parse_time(s): for cracker in time_crackers: m = cracker.search(s) if not m: continue g = m.groupdict() hour,minute,second,microsecond,tzname = (None,None,None,None,None) if g.get('hour', None) is not None: hour = int(g['hour']) # convert to 24 hour time # if no am/pm, assume 24hr if g.get('pm',None) is not None and hour>=1 and hour <=11: hour = hour + 12 if g.get('am',None) is not None and hour==12: hour = hour - 12 if hour<0 or hour>23: continue if g.get('min', None) is not None: minute = int(g['min']) if minute<0 or minute>59: continue if g.get('sec', None) is not None: second = int(g['sec']) if second<0 or second>59: continue tzname = g.get('tz',None) if tzname is not None: if tzabbr.abbr_to_delta(tzname) is None: continue # not a recognised TZ if hour is not None or min is not None or sec is not None: return (fuzzydate(hour=hour,minute=minute,second=second,microsecond=microsecond,tzname=tzname),m.span()) return (fuzzydate(),None)