According to the RSS specification, the pubDate element (when the item was published) must be formatted like this : Mon, 28 May 1979 19:45:32 GMT
Here is a function that will accept a DateTime object and return a string formatted properly for pubDate:
C#
private string BuildPubDate(DateTime d)
{
try
{
string RV = "";
string day = d.Day.ToString();
if (day.Length == 1) { day = "0" + day; }
string month = d.Month.ToString();
if (month == "1") { month = "January"; }
else if (month == "2") { month = "February"; }
else if (month == "3") { month = "March"; }
else if (month == "4") { month = "April"; }
else if (month == "5") { month = "May"; }
else if (month == "6") { month = "June"; }
else if (month == "7") { month = "July"; }
else if (month == "8") { month = "August"; }
else if (month == "9") { month = "September"; }
else if (month == "10") { month = "October"; }
else if (month == "11") { month = "November"; }
else if (month == "12") { month = "December"; }
string mTime = "";
DateTime mDate = d.ToUniversalTime();
if (mDate.Hour.ToString().Length == 1)
{
mTime = "0" + mDate.Hour.ToString();
}
else
{
mTime = mDate.Hour.ToString();
}
mTime += ":";
if (mDate.Minute.ToString().Length == 1)
{
mTime += "0" + mDate.Minute.ToString();
}
else
{
mTime += mDate.Minute.ToString();
}
mTime += ":";
if (mDate.Second.ToString().Length == 1)
{
mTime += "0" + mDate.Second.ToString();
}
else
{
mTime += mDate.Second.ToString();
}
RV = d.DayOfWeek.ToString().Substring(0, 3);
RV += ", " + day + " " + month.Substring(0, 3);
RV += " " + d.Year.ToString() + " " + mTime + " GMT";
return RV;
}
catch (Exception)
{
return null;
}
}
VB.NET
Private Function BuildPubDate(ByVal d As Date) As String
Try
Dim RV As String
Dim day As String = d.Day.ToString
If day.Length = 1 Then day = "0" & day
Dim month As String = d.Month.ToString
Select Case month
Case "1"
month = "January"
Case "2"
month = "February"
Case "3"
month = "March"
Case "4"
month = "April"
Case "5"
month = "May"
Case "6"
month = "June"
Case "7"
month = "July"
Case "8"
month = "August"
Case "9"
month = "September"
Case "10"
month = "October"
Case "11"
month = "November"
Case "12"
month = "December"
End Select
Dim Mtime As String = ""
Dim mDate As Date = d.ToUniversalTime
If mDate.Hour.ToString.Length = 1 Then
Mtime = "0" & mDate.Hour.ToString
Else
Mtime = mDate.Hour.ToString
End If
Mtime += ":"
If mDate.Minute.ToString.Length = 1 Then
Mtime += "0" & mDate.Minute.ToString
Else
Mtime += mDate.Minute.ToString
End If
Mtime += ":"
If mDate.Second.ToString.Length = 1 Then
Mtime += "0" & mDate.Second.ToString
Else
Mtime += mDate.Second.ToString
End If
RV = d.DayOfWeek.ToString.Substring(0, 3)
RV += ", " & day & " " & month.Substring(0, 3)
RV += " " & d.Year.ToString & " " & Mtime & " GMT"
Return RV
Catch ex As Exception
Return ""
End Try
End Function