diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index f773835..ba2b700 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -179,6 +179,53 @@
 	return 1;
 }
 
+#ifdef HAVE_STRFTIME
+static object *
+time_strftime(self, args)
+	object *self;
+	object *args;
+{
+	struct tm buf;
+	const char *fmt;
+	char *outbuf = 0;
+	int i;
+
+	if (!PyArg_ParseTuple(args, "s(iiiiiiiii)",
+			      &fmt,
+			      &(buf.tm_year),
+			      &(buf.tm_mon),
+			      &(buf.tm_mday),
+			      &(buf.tm_hour),
+			      &(buf.tm_min),
+			      &(buf.tm_sec),
+			      &(buf.tm_wday),
+			      &(buf.tm_yday),
+			      &(buf.tm_isdst)))
+		return NULL;
+	if (buf.tm_year >= 1900)
+		buf.tm_year -= 1900;
+	buf.tm_mon--;
+	buf.tm_wday = (buf.tm_wday + 1) % 7;
+	buf.tm_yday--;
+	/* I hate these functions that presume you know how big the output */
+	/* will be ahead of time... */
+	for (i = 1024 ; i < 8192 ; i += 1024) {
+		outbuf = malloc(i);
+		if (outbuf == NULL) {
+			return err_nomem();
+		}
+		if (strftime(outbuf, i-1, fmt, &buf) != 0) {
+			object *ret;
+			ret = newstringobject(outbuf);
+			free(outbuf);
+			return ret;
+		}
+		free(outbuf);
+	}
+	return err_nomem();
+}
+#endif /* HAVE_STRFTIME */
+
 static object *
 time_asctime(self, args)
 	object *self;
@@ -233,6 +280,9 @@
 	{"asctime",	time_asctime},
 	{"ctime",	time_ctime},
 	{"mktime",	time_mktime},
+#ifdef HAVE_STRFTIME
+	{"strftime",	time_strftime},
+#endif
 	{NULL,		NULL}		/* sentinel */
 };
 
