DateTime/DateTimeOffset.TryParseExactメソッドで複数の書式を指定して文字列からの変換を試みる 言語: C# VB ParseExact・TryParseExactメソッドで複数の書式を許容するようにしたい場合は、次の例のように、その書式を配列で指定します。 どれか一つでも一致する書式があれば、変換に成功します。 DateTime/DateTimeOffset.TryParseExactメソッドで複数の書式を指定して文字列からの変換を試みる すべて選択してコピー ダウンロード 行番号を表示する using System; using System.Globalization; class Sample { static void Main() { var inputs = new string[] { "Mon, 01 Apr 2013 15:00:30 GMT", // RFC1123形式の文字列 "2013年4月1日 15:00:30", // 一般的な形式の文字列 "2013-04-01T15:00:30.1230000+09:00", // ISO8601形式の文字列 "2013-04-01T15:00:30.1230000", // ISO8601形式の文字列 (オフセット無し) "2013-04-01", // ISO8601形式の文字列 (日付のみ) "15:00:30", // ISO8601形式の文字列 (時刻のみ) }; // 変換時に許容する書式 var formats = new string[] { "o", // 一般的な形式 "yyyy-MM-dd", // 日付のみの形式 "HH:mm:ss", // 時刻のみの形式 }; foreach (var input in inputs) { DateTime dt; // 指定した書式で文字列からDateTimeへの変換を試行 if (DateTime.TryParseExact(input, formats, null, DateTimeStyles.None, out dt)) Console.WriteLine("{0,-35} -> {1}", input, dt); else Console.WriteLine("{0,-35} -> (invalid format)", input); } Console.WriteLine(); foreach (var input in inputs) { DateTimeOffset dto; // 指定した書式で文字列からDateTimeOffsetへの変換を試行 if (DateTimeOffset.TryParseExact(input, formats, null, DateTimeStyles.None, out dto)) Console.WriteLine("{0,-35} -> {1}", input, dto); else Console.WriteLine("{0,-35} -> (invalid format)", input); } Console.WriteLine(); } } 実行結果 Mon, 01 Apr 2013 15:00:30 GMT -> (invalid format) 2013年4月1日 15:00:30 -> (invalid format) 2013-04-01T15:00:30.1230000+09:00 -> 2013/04/01 15:00:30 2013-04-01T15:00:30.1230000 -> 2013/04/01 15:00:30 2013-04-01 -> 2013/04/01 0:00:00 15:00:30 -> 2013/03/08 15:00:30 Mon, 01 Apr 2013 15:00:30 GMT -> (invalid format) 2013年4月1日 15:00:30 -> (invalid format) 2013-04-01T15:00:30.1230000+09:00 -> 2013/04/01 15:00:30 +09:00 2013-04-01T15:00:30.1230000 -> 2013/04/01 15:00:30 +09:00 2013-04-01 -> 2013/04/01 0:00:00 +09:00 15:00:30 -> 2013/03/08 15:00:30 +09:00 関連するページ DateTime/DateTimeOffset.Parseメソッドでカルチャを指定して文字列を変換する DateTime/DateTimeOffset.ParseExactメソッドで指定された書式に一致する文字列のみを変換する DateTime/DateTimeOffset.TryParseExactメソッドで書式を指定して文字列からの変換を試みる DateTime/DateTimeOffset.TryParseExactメソッドでDateTimeStylesを指定して文字列中の空白の扱いを指定する DateTime/DateTimeOffset.ParseExactメソッドでDateTimeStylesを指定し、時刻をローカル時刻またはUTCとみなして変換する DateTime/DateTimeOffset.ParseExactメソッドでDateTimeStylesを指定し、変換した時刻のオフセットを補正または維持する DateTime.ParseメソッドでDateTimeStyles.NoCurrentDateDefaultを指定し、今日ではなく1年1月1日の時刻として変換する