Fixed #19917 -- Added microseconds in default TIME_INPUT_FORMATS

Thanks minddust for the report.
This commit is contained in:
Claude Paroz 2013-03-02 18:01:24 +01:00
parent fe5d9fe5fe
commit 384c180e41
4 changed files with 13 additions and 2 deletions

View File

@ -365,6 +365,7 @@ DATE_INPUT_FORMATS = (
# * Note that these format strings are different from the ones to display dates # * Note that these format strings are different from the ones to display dates
TIME_INPUT_FORMATS = ( TIME_INPUT_FORMATS = (
'%H:%M:%S', # '14:30:59' '%H:%M:%S', # '14:30:59'
'%H:%M:%S.%f', # '14:30:59.000200'
'%H:%M', # '14:30' '%H:%M', # '14:30'
) )

View File

@ -19,7 +19,7 @@ _format_modules_cache = {}
ISO_INPUT_FORMATS = { ISO_INPUT_FORMATS = {
'DATE_INPUT_FORMATS': ('%Y-%m-%d',), 'DATE_INPUT_FORMATS': ('%Y-%m-%d',),
'TIME_INPUT_FORMATS': ('%H:%M:%S', '%H:%M'), 'TIME_INPUT_FORMATS': ('%H:%M:%S', '%H:%M:%S.%f', '%H:%M'),
'DATETIME_INPUT_FORMATS': ( 'DATETIME_INPUT_FORMATS': (
'%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S',
'%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M:%S.%f',

View File

@ -1731,6 +1731,7 @@ Default::
( (
'%H:%M:%S', # '14:30:59' '%H:%M:%S', # '14:30:59'
'%H:%M:%S.%f', # '14:30:59.000200'
'%H:%M', # '14:30' '%H:%M', # '14:30'
) )
@ -1744,6 +1745,10 @@ precedence and will be applied instead.
See also :setting:`DATE_INPUT_FORMATS` and :setting:`DATETIME_INPUT_FORMATS`. See also :setting:`DATE_INPUT_FORMATS` and :setting:`DATETIME_INPUT_FORMATS`.
.. versionchanged:: 1.6
Input format with microseconds has been added.
.. _datetime: http://docs.python.org/library/datetime.html#strftime-strptime-behavior .. _datetime: http://docs.python.org/library/datetime.html#strftime-strptime-behavior
.. setting:: TIME_ZONE .. setting:: TIME_ZONE

View File

@ -9,7 +9,8 @@ from django.test import SimpleTestCase
@override_settings(TIME_INPUT_FORMATS=["%I:%M:%S %p", "%I:%M %p"], USE_L10N=True) @override_settings(TIME_INPUT_FORMATS=["%I:%M:%S %p", "%I:%M %p"], USE_L10N=True)
class LocalizedTimeTests(SimpleTestCase): class LocalizedTimeTests(SimpleTestCase):
def setUp(self): def setUp(self):
# nl/formats.py has customized TIME_INPUT_FORMATS # nl/formats.py has customized TIME_INPUT_FORMATS:
# ('%H:%M:%S', '%H.%M:%S', '%H.%M', '%H:%M')
activate('nl') activate('nl')
def tearDown(self): def tearDown(self):
@ -37,6 +38,10 @@ class LocalizedTimeTests(SimpleTestCase):
text = f.widget._format_value(result) text = f.widget._format_value(result)
self.assertEqual(text, "13:30:00") self.assertEqual(text, "13:30:00")
# ISO formats are accepted, even if not specified in formats.py
result = f.clean('13:30:05.000155')
self.assertEqual(result, time(13,30,5,155))
def test_localized_timeField(self): def test_localized_timeField(self):
"Localized TimeFields act as unlocalized widgets" "Localized TimeFields act as unlocalized widgets"
f = forms.TimeField(localize=True) f = forms.TimeField(localize=True)