Пример #1
0
 def test_parse_datetime(self):
     # Valid inputs
     self.assertEqual(parse_datetime('2012-04-23T09:15:00'),
         datetime(2012, 4, 23, 9, 15))
     self.assertEqual(parse_datetime('2012-4-9 4:8:16'),
         datetime(2012, 4, 9, 4, 8, 16))
     self.assertEqual(parse_datetime('2012-04-23T09:15:00Z'),
         datetime(2012, 4, 23, 9, 15, 0, 0, FixedOffset(0)))
     self.assertEqual(parse_datetime('2012-4-9 4:8:16-0320'),
         datetime(2012, 4, 9, 4, 8, 16, 0, FixedOffset(-200)))
     self.assertEqual(parse_datetime('2012-04-23T10:20:30.400+02:30'),
         datetime(2012, 4, 23, 10, 20, 30, 400000, FixedOffset(150)))
     # Invalid inputs
     self.assertEqual(parse_datetime('20120423091500'), None)
     self.assertRaises(ValueError, parse_datetime, '2012-04-56T09:15:90')
Пример #2
0
    def to_python(self, value):
        if value is None:
            return value
        if isinstance(value, datetime.datetime):
            return value
        if isinstance(value, datetime.date):
            value = datetime.datetime(value.year, value.month, value.day)
            if settings.USE_TZ:
                # For backwards compatibility, interpret naive datetimes in
                # local time. This won't work during DST change, but we can't
                # do much about it, so we let the exceptions percolate up the
                # call stack.
                warnings.warn("DateTimeField received a naive datetime (%s)"
                              " while time zone support is active." % value,
                              RuntimeWarning)
                default_timezone = timezone.get_default_timezone()
                value = timezone.make_aware(value, default_timezone)
            return value

        try:
            parsed = parse_datetime(value)
            if parsed is not None:
                return parsed
        except ValueError:
            msg = self.error_messages['invalid_datetime'] % value
            raise exceptions.ValidationError(msg)

        try:
            parsed = parse_date(value)
            if parsed is not None:
                return datetime.datetime(parsed.year, parsed.month, parsed.day)
        except ValueError:
            msg = self.error_messages['invalid_date'] % value
            raise exceptions.ValidationError(msg)

        msg = self.error_messages['invalid'] % value
        raise exceptions.ValidationError(msg)
Пример #3
0
def parse_datetime_with_timezone_support(value):
    dt = parse_datetime(value)
    # Confirm that dt is naive before overwriting its tzinfo.
    if dt is not None and settings.USE_TZ and timezone.is_naive(dt):
        dt = dt.replace(tzinfo=timezone.utc)
    return dt