日付/時刻の形式が正確にわかっている場合(つまり、変更されることはなく、ユーザーの文化やロケールに依存しない場合)、を使用できますDateTime.TryParseExact
。
例えば:
DateTime result;
if (DateTime.TryParseExact(
str, // The string you want to parse
"dd-MM-yyyy", // The format of the string you want to parse.
CultureInfo.InvariantCulture, // The culture that was used
// to create the date/time notation
DateTimeStyles.None, // Extra flags that control what assumptions
// the parser can make, and where whitespace
// may occur that is ignored.
out result)) // Where the parsed result is stored.
{
// Only when the method returns true did the parsing succeed.
// Therefore it is in an if-statement and at this point
// 'result' contains a valid DateTime.
}
フォーマット文字列は、完全に指定されたカスタムの日付/時刻フォーマット(などdd-MM-yyyy
)、または一般的なフォーマット指定子(などg
)にすることができます。後者の場合、日付の形式については文化が重要です。たとえば、オランダでは日付は26-07-2012
(dd-MM-yyyy
)と表記されますが、米国では日付は7/26/2012
(M/d/yyyy
)と表記されます。
ただし、これはすべて、文字列str
に解析する日付のみが含まれている場合にのみ機能します。日付の周りにあらゆる種類の不要な文字が含まれる大きな文字列がある場合は、最初にそこにある日付を見つける必要があります。これは、それ自体がまったく別のトピックである正規表現を使用して実行できます。C#の正規表現(regex)に関する一般的な情報は、ここにあります。正規表現のリファレンスはこちらです。たとえば、に類似した日付d/M/yyyy
は、正規表現を使用して見つけることができます\d{1,2}\/\d{1,2}\/\d{4}
。