メールの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); }