def duration_from_string(cls, string): duration = _duration_re.match(string).groupdict(0) if duration is None: raise ValidationError("time data '%s' does not match regex '%s'" % (string, _duration_re.pattern)) days = int(duration['days']) days += int(duration['months']) * 30 days += int(duration['years']) * 365 hours = int(duration['hours']) minutes = int(duration['minutes']) seconds = float(duration['seconds']) f, i = math.modf(seconds) seconds = i microseconds = int(1e6 * f) delta = datetime.timedelta(days=days, hours=hours, minutes=minutes, seconds=seconds, microseconds=microseconds) if duration['sign'] == "-": delta *= -1 return delta
def duration_from_string(cls, string): duration = _duration_re.match(string).groupdict(0) if duration is None: raise ValidationError("time data '%s' does not match regex '%s'" % (string, _duration_re.pattern)) days = int(duration["days"]) days += int(duration["months"]) * 30 days += int(duration["years"]) * 365 hours = int(duration["hours"]) minutes = int(duration["minutes"]) seconds = float(duration["seconds"]) f, i = math.modf(seconds) seconds = i microseconds = int(1e6 * f) delta = datetime.timedelta(days=days, hours=hours, minutes=minutes, seconds=seconds, microseconds=microseconds) if duration["sign"] == "-": delta *= -1 return delta
def duration_from_string(self, cls, string): duration = _duration_re.match(string).groupdict(0) if duration is None: raise ValidationError("time data '%s' does not match regex '%s'" % (string, _duration_re.pattern)) days = int(duration['days']) days += int(duration['months']) * 30 days += int(duration['years']) * 365 hours = int(duration['hours']) minutes = int(duration['minutes']) seconds = float(duration['seconds']) f, i = modf(seconds) seconds = i microseconds = int(1e6 * f) delta = timedelta(days=days, hours=hours, minutes=minutes, seconds=seconds, microseconds=microseconds) if duration['sign'] == "-": delta *= -1 return delta