diff --git a/Doc/lib/libdatetime.tex b/Doc/lib/libdatetime.tex
index caf6bbc..7f8b8bb 100644
--- a/Doc/lib/libdatetime.tex
+++ b/Doc/lib/libdatetime.tex
@@ -624,6 +624,15 @@
   ignored.
   \end{methoddesc}
 
+\begin{methoddesc}{strptime}{date_string, format}
+  Return a \class{datetime} corresponding to \var{date_string}, parsed
+  according to \var{format}.  This is equivalent to
+  \code{datetime(*(time.strptime(date_string,
+  format)[0:6]))}. \exception{ValueError} is raised if the date_string and
+  format can't be parsed by \function{time.strptime()} or if it returns a
+  value which isn't a time tuple.
+\end{methoddesc}
+
 Class attributes:
 
 \begin{memberdesc}{min}
diff --git a/Lib/test/test_datetime.py b/Lib/test/test_datetime.py
index ab7bd71..d1f312d 100644
--- a/Lib/test/test_datetime.py
+++ b/Lib/test/test_datetime.py
@@ -1421,6 +1421,15 @@
             # Else try again a few times.
         self.failUnless(abs(from_timestamp - from_now) <= tolerance)
 
+    def test_strptime(self):
+        import time
+
+        string = '2004-12-01 13:02:47'
+        format = '%Y-%m-%d %H:%M:%S'
+        expected = self.theclass(*(time.strptime(string, format)[0:6]))
+        got = self.theclass.strptime(string, format)
+        self.assertEqual(expected, got)
+
     def test_more_timetuple(self):
         # This tests fields beyond those tested by the TestDate.test_timetuple.
         t = self.theclass(2004, 12, 31, 6, 22, 33)
diff --git a/Misc/ACKS b/Misc/ACKS
index a582d90..3c192ad 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -548,6 +548,7 @@
 Paul Sokolovsky
 Clay Spence
 Per Spilling
+Joshua Spoerri
 Noah Spurrier
 Oliver Steele
 Greg Stein
diff --git a/Misc/NEWS b/Misc/NEWS
index 26edc89..5ad39e2 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -31,6 +31,8 @@
   This allows islice() to work more readily with slices:
       islice(s.start, s.stop, s.step)
 
+- datetime.datetime() now has a strptime class method which can be used to
+  create datetime object using a string and format.
 
 Library
 -------
diff --git a/Modules/datetimemodule.c b/Modules/datetimemodule.c
index 4b4b2c5..7c1a6d0 100644
--- a/Modules/datetimemodule.c
+++ b/Modules/datetimemodule.c
@@ -3798,6 +3798,46 @@
 	return result;
 }
 
+/* Return new datetime from time.strptime(). */
+static PyObject *
+datetime_strptime(PyObject *cls, PyObject *args)
+{
+	PyObject *result = NULL, *obj, *module;
+	const char *string, *format;
+
+	if (!PyArg_ParseTuple(args, "ss:strptime", &string, &format))
+		return NULL;
+
+	if ((module = PyImport_ImportModule("time")) == NULL)
+		return NULL;
+	obj = PyObject_CallMethod(module, "strptime", "ss", string, format);
+	Py_DECREF(module);
+
+	if (obj != NULL) {
+		int i, good_timetuple = 1;
+		long int ia[6];
+		if (PySequence_Check(obj) && PySequence_Size(obj) >= 6)
+			for (i=0; i < 6; i++) {
+				PyObject *p = PySequence_GetItem(obj, i);
+				if (PyInt_Check(p))
+					ia[i] = PyInt_AsLong(p);
+				else
+					good_timetuple = 0;
+				Py_DECREF(p);
+			}
+		else
+			good_timetuple = 0;
+		if (good_timetuple)
+			result = PyObject_CallFunction(cls, "iiiiii",
+				ia[0], ia[1], ia[2], ia[3], ia[4], ia[5]);
+		else
+			PyErr_SetString(PyExc_ValueError,
+				"unexpected value from time.strptime");
+		Py_DECREF(obj);
+	}
+	return result;
+}
+
 /* Return new datetime from date/datetime and time arguments. */
 static PyObject *
 datetime_combine(PyObject *cls, PyObject *args, PyObject *kw)
@@ -4419,6 +4459,11 @@
 	 PyDoc_STR("timestamp -> UTC datetime from a POSIX timestamp "
 	 	   "(like time.time()).")},
 
+	{"strptime", (PyCFunction)datetime_strptime,
+	 METH_VARARGS | METH_CLASS,
+	 PyDoc_STR("string, format -> new datetime parsed from a string "
+	 	   "(like time.strptime()).")},
+
 	{"combine", (PyCFunction)datetime_combine,
 	 METH_VARARGS | METH_KEYWORDS | METH_CLASS,
 	 PyDoc_STR("date, time -> datetime with same date and time fields")},
