Exemplo n.º 1
0
    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
Exemplo n.º 2
0
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)