//End of address parsing.
//Date parsing conformant to RFC2822 and accepting RFC822 dates.
public static System.DateTime ParseAsUniversalDateTime(string input)
{
input = Parser.ReplaceTimeZone(input);
input = Parser.Clean(input);
input = System.Text.RegularExpressions.Regex.Replace(input,@" +"," ");
input = System.Text.RegularExpressions.Regex.Replace(input,@"( +: +)|(: +)|( +:)",":");
if(input.IndexOf(",")!=-1)
{
input = input.Replace(input.Split(',')[0]+", ","");
}
string[] parts = input.Split(' ');
int year = System.Convert.ToInt32(parts[2]);
if(year<100)
{
if(year>49) year += 1900;
else year += 2000;
}
int month = Parser.GetMonth(parts[1]);
int day = System.Convert.ToInt32(parts[0]);
string[] dateParts = parts[3].Split(':');
int hour = System.Convert.ToInt32(dateParts[0]);
int minute = System.Convert.ToInt32(dateParts[1]);
int second = 0;
if(dateParts.Length>2) second = System.Convert.ToInt32(dateParts[2]);
int offset_hours = System.Convert.ToInt32(parts[4].Substring(0,3));
int offset_minutes = System.Convert.ToInt32(parts[4].Substring(3,2));
System.DateTime date = new System.DateTime(year,month,day,hour,minute,second);
date = date.AddHours(-offset_hours);
date = date.AddMinutes(-offset_minutes);
return date;
}