.NET メールのDateフィールド値をDateTimeに変換
下記のような、メールヘッダのDate値を変換する。 Date: Sun, 02 Jul 2006 19:45:13 +0100 CultureInfoを en-US にしないと、曜日、月の省略語を正しく認識できない。 // 変換に失敗すると FormatException を投げる。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 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); }