Index: tests/date.c
===================================================================
--- tests/date.c	(revision 1277)
+++ tests/date.c	(working copy)
@@ -17,9 +17,7 @@ static const struct {
 } good_dates[] = {
 	{ SOUP_DATE_HTTP,            "Sat, 06 Nov 2004 08:09:07 GMT" },
 	{ SOUP_DATE_COOKIE,          "Sat, 06-Nov-2004 08:09:07 GMT" },
-#ifdef NOT_YET
-	{ SOUP_DATE_RFC2822,         "Sat, 06 Nov 2004 08:09:07 +0000" },
-#endif
+	{ SOUP_DATE_RFC2822,         "Sat, 6 Nov 2004 08:09:07 -0430" },
 	{ SOUP_DATE_ISO8601_COMPACT, "20041106T080907" },
 	{ SOUP_DATE_ISO8601_FULL,    "2004-11-06T08:09:07" },
 	{ SOUP_DATE_ISO8601_XMLRPC,  "20041106T08:09:07" }
Index: libsoup/soup-date.c
===================================================================
--- libsoup/soup-date.c	(revision 1277)
+++ libsoup/soup-date.c	(working copy)
@@ -298,10 +298,15 @@ parse_timezone (SoupDate *date, const ch
 		gulong val;
 		int sign = (**date_string == '+') ? -1 : 1;
 		val = strtoul (*date_string + 1, (char **)date_string, 10);
+		if (**date_string == '\0')
+			val =  60 * (val / 100) + (val % 100);
+		else {
 		if (**date_string != ':')
 			return FALSE;
 		val = 60 * val + strtoul (*date_string + 1, (char **)date_string, 10);
+		}
 		date->offset = sign * val;
+		g_message("%d", date->offset);
 		date->utc = sign && !val;
 	} else if (**date_string == 'Z') {
 		date->offset = 0;
@@ -526,7 +531,17 @@ soup_date_to_string (SoupDate *date, Sou
 		return g_strdup_printf ("%04d%02d%02dT%02d:%02d:%02d",
 					date->year, date->month, date->day,
 					date->hour, date->minute, date->second);
-
+	case SOUP_DATE_RFC2822:
+	{
+		gint hour_offset = abs(date->offset) / 60;
+		/* "Sun, 6 Nov 1994 09:49:37 -0100" */
+		return g_strdup_printf ("%s, %d %s %04d %02d:%02d:%02d %c%02d%02d",
+					soup_date_weekday (date), date->day,
+					months[date->month - 1],
+					date->year, date->hour, date->minute,
+					date->second, (date->offset > 0) ? '-' : '+',
+					hour_offset, abs(date->offset) - (hour_offset * 60));
+	}
 	default:
 		return NULL;
 	}
