Index: django/newforms/widgets.py
===================================================================
--- django/newforms/widgets.py	(revision 7582)
+++ django/newforms/widgets.py	(working copy)
@@ -8,8 +8,11 @@
     from sets import Set as set   # Python 2.3 fallback
 
 import copy
+import datetime
 from itertools import chain
 
+from django.conf import settings
+from django.utils import dateformat
 from django.utils.datastructures import MultiValueDict
 from django.utils.html import escape, conditional_escape
 from django.utils.translation import ugettext
@@ -18,7 +21,7 @@
 from util import flatatt
 
 __all__ = (
-    'Widget', 'TextInput', 'PasswordInput',
+    'Widget', 'TextInput', 'DateTextInput', 'TimeTextInput', 'PasswordInput',
     'HiddenInput', 'MultipleHiddenInput',
     'FileInput', 'DateTimeInput', 'Textarea', 'CheckboxInput',
     'Select', 'NullBooleanSelect', 'SelectMultiple', 'RadioSelect',
@@ -95,6 +98,32 @@
 class TextInput(Input):
     input_type = 'text'
 
+class DateTextInput(TextInput):
+    """Renders value in text input using default or specified date format."""
+    def __init__(self, format=None, attrs=None):
+        super(DateTextInput, self).__init__(attrs)
+        self.format = format or (ugettext('DATE_FORMAT') or settings.DATE_FORMAT)
+
+    def render(self, name, value, attrs=None):
+        if value and (isinstance(value, datetime.date) or isinstance(value, datetime.datetime)):
+            formatted_value = dateformat.format(value, self.format)
+        else:
+            formatted_value = None
+        return super(DateTextInput, self).render(name, formatted_value, attrs)
+
+class TimeTextInput(TextInput):
+    """Renders time in text input using default or specified time format."""
+    def __init__(self, format=None, attrs=None):
+        super(TimeTextInput, self).__init__(attrs)
+        self.format = format or (ugettext('TIME_FORMAT') or settings.TIMEFORMAT)
+
+    def render(self, name, value, attrs=None):
+        if value and (isinstance(value, datetime.time) or isinstance(value, datetime.datetime)):
+            formatted_value = dateformat.time_format(value, self.format)
+        else:
+            formatted_value = None
+        return super(TimeTextInput, self).render(name, formatted_value, attrs)
+
 class PasswordInput(Input):
     input_type = 'password'
 
Index: tests/regressiontests/forms/widgets.py
===================================================================
--- tests/regressiontests/forms/widgets.py	(revision 7582)
+++ tests/regressiontests/forms/widgets.py	(working copy)
@@ -50,6 +50,42 @@
 >>> w.render('email', '', attrs={'class': 'special'})
 u'<input type="text" class="special" name="email" />'
 
+# DateTextInput Widget ############################################################
+ 
+>>> w = DateTextInput(format='d F Y')
+>>> w.render('date', '')
+u'<input type="text" name="date" />'
+>>> w.render('date', 'bogus')
+u'<input type="text" name="date" />'
+>>> w.render('date', datetime.date(2007, 9, 1))
+u'<input type="text" name="date" value="01 September 2007" />'
+>>> w.render('date', datetime.datetime(2007, 1, 9, 22, 11))
+u'<input type="text" name="date" value="09 January 2007" />'
+>>> w = DateTextInput(format='N j, Y', attrs={'class': 'fun'})
+>>> w.render('date', datetime.date(2007, 9, 1))
+u'<input type="text" class="fun" value="Sept. 1, 2007" name="date" />'
+>>> w.render('date', datetime.datetime(2007, 1, 9, 11, 22))
+u'<input type="text" class="fun" value="Jan. 9, 2007" name="date" />'
+
+# TimeTextInput Widget ############################################################
+
+>>> w = TimeTextInput(format='H:i:s')
+>>> w.render('time', '')
+u'<input type="text" name="time" />'
+>>> w.render('time', 'bogus')
+u'<input type="text" name="time" />'
+>>> w.render('time', datetime.time(11, 22, 33))
+u'<input type="text" name="time" value="11:22:33" />'
+>>> w.render('time', datetime.time(21, 32))
+u'<input type="text" name="time" value="21:32:00" />'
+>>> w = TimeTextInput(format='P', attrs={'class': 'shiny'})
+>>> w.render('time', datetime.datetime(2007, 1, 9, 11, 22, 33))
+u'<input type="text" class="shiny" value="11:22 a.m." name="time" />'
+>>> w.render('time', datetime.datetime(2007, 1, 9, 21, 32))
+u'<input type="text" class="shiny" value="9:32 p.m." name="time" />'
+>>> w.render('time', datetime.datetime(2007, 1, 9))
+u'<input type="text" class="shiny" value="midnight" name="time" />'
+
 # PasswordInput Widget ############################################################
 
 >>> w = PasswordInput()
