diff --git a/Lib/test/test_xmlrpc.py b/Lib/test/test_xmlrpc.py
index 1f533d2..8fa63de 100644
--- a/Lib/test/test_xmlrpc.py
+++ b/Lib/test/test_xmlrpc.py
@@ -1,3 +1,4 @@
+import datetime
 import sys
 import unittest
 import xmlrpclib
@@ -12,6 +13,11 @@
           'boolean': xmlrpclib.False,
           'unicode': u'\u4000\u6000\u8000',
           u'ukey\u4000': 'regular value',
+          'datetime1': xmlrpclib.DateTime('20050210T11:41:23'),
+          'datetime2': xmlrpclib.DateTime(
+                        (2005, 02, 10, 11, 41, 23, 0, 1, -1)),
+          'datetime3': xmlrpclib.DateTime(
+                        datetime.datetime(2005, 02, 10, 11, 41, 23)),
           }]
 
 class XMLRPCTestCase(unittest.TestCase):
@@ -20,6 +26,17 @@
         self.assertEquals(alist,
                           xmlrpclib.loads(xmlrpclib.dumps((alist,)))[0][0])
 
+    def test_dump_bare_datetime(self):
+        # This checks that an unwrapped datetime object can be handled
+        # by the marshalling code.  This can't be done via
+        # test_dump_load() since the unmarshaller doesn't produce base
+        # datetime instances.
+        dt = datetime.datetime(2005, 02, 10, 11, 41, 23)
+        s = xmlrpclib.dumps((dt,))
+        r, m = xmlrpclib.loads(s)
+        self.assertEquals(r, (xmlrpclib.DateTime('20050210T11:41:23'),))
+        self.assertEquals(m, None)
+
     def test_dump_big_long(self):
         self.assertRaises(OverflowError, xmlrpclib.dumps, (2L**99,))
 
diff --git a/Lib/xmlrpclib.py b/Lib/xmlrpclib.py
index 7b68196..21cc3d0 100644
--- a/Lib/xmlrpclib.py
+++ b/Lib/xmlrpclib.py
@@ -149,6 +149,11 @@
     unicode = None # unicode support not available
 
 try:
+    import datetime
+except ImportError:
+    datetime = None
+
+try:
     _bool_is_builtin = False.__class__.__name__ == "bool"
 except NameError:
     _bool_is_builtin = 0
@@ -349,7 +354,10 @@
 
     def __init__(self, value=0):
         if not isinstance(value, StringType):
-            if not isinstance(value, (TupleType, time.struct_time)):
+            if datetime and isinstance(value, datetime.datetime):
+                self.value = value.strftime("%Y%m%dT%H:%M:%S")
+                return
+            elif not isinstance(value, (TupleType, time.struct_time)):
                 if value == 0:
                     value = time.time()
                 value = time.localtime(value)
@@ -699,6 +707,13 @@
         del self.memo[i]
     dispatch[DictType] = dump_struct
 
+    if datetime:
+        def dump_datetime(self, value, write):
+            write("<value><dateTime.iso8601>")
+            write(value.strftime("%Y%m%dT%H:%M:%S"))
+            write("</dateTime.iso8601></value>\n")
+        dispatch[datetime.datetime] = dump_datetime
+
     def dump_instance(self, value, write):
         # check for special wrappers
         if value.__class__ in WRAPPERS:
