メールのDateフィールド値をDateTimeに変換

下記のような、メールヘッダのDate値を変換する。
Date: Sun, 02 Jul 2006 19:45:13 +0100
CultureInfoを en-US にしないと、曜日、月の省略語を正しく認識できない。

// 変換に失敗すると FormatException を投げる。
public static DateTime ParseMailDate(string field){
  // (JST) などを取り払う
  int i = field.LastIndexOf("(");
  if (i > -1){
    field = field.Substring(0, i).TrimEnd();
  }

  string [] expectedFormats = {"ddd, d MMM yyyy HH':'mm':'ss zzz",
           "ddd, d MMM yyyy H':'m':'s zzz", "d MMM yyyy HH':'mm':'ss zzz",
           "ddd, d MMM yyyy HH':'mm':'ss", "ddd, d MMM yyyy H':'m':'s",
           "d MMM yyyy HH':'mm':'ss"};

  // ゴミがあったら削除
  if (field.Length > 31) {
    field = field.Substring(0, field.LastIndexOf(' ') - 1);
  }
  
  return System.DateTime.ParseExact(field, expectedFormats,
            System.Globalization.CultureInfo.GetCultureInfo("en-US"),
            System.Globalization.DateTimeStyles.None);
}