DateTimeをEDI-Order( "20120713"/YYYYMMDDまたは"120713"/ YYMMDD、またはドットのない他の日付なので、数字だけ)からC#の"DD.MM.YYY"のような有効な日付に解析しようとしています。
異なるEDI-Ordersにいくつの異なる日付形式があるのかわからないので、それらすべてに適用できる解決策を探しています。
みんなありがとう。
DateTimeをEDI-Order( "20120713"/YYYYMMDDまたは"120713"/ YYMMDD、またはドットのない他の日付なので、数字だけ)からC#の"DD.MM.YYY"のような有効な日付に解析しようとしています。
異なるEDI-Ordersにいくつの異なる日付形式があるのかわからないので、それらすべてに適用できる解決策を探しています。
みんなありがとう。
このオーバーロードの使用に興味があるはずですParseExact
。複数の形式を配列として渡すことができ、それらに基づいて解析を試みます(形式を制御でき、プロセスに1つを使用する予定があると便利です)
DateTime start = DateTime.ParseExact("20120713",
new[] { "yyyyMMdd", "yyMMdd" },
CultureInfo.InvariantCulture,
DateTimeStyles.None);
DateTime end = DateTime.ParseExact("120713",
new[] { "yyyyMMdd", "yyMMdd" },
CultureInfo.InvariantCulture,
DateTimeStyles.None);
あなたの出力のためにあなたはすることができますstart.ToString("dd.MM.yyyy")
これは複数のフォーマットで機能するはずです
DateTime Result = new DateTime();
string[] dateFormats = new string[]{ "YYYYMMDD", "YYMMDD", /*other formats you might need*/ };
if (dateFormats.Any(format => DateTime.TryParseExact("yourDate", format, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out Result)))
{ /* Result contains the parsed DateTime and you can use it*/ }
else
{ /* DateTime couldn't be parsed for any format you specified */ }