私はC#で少し苦労していDateTime.TryParse()
ます.
基本的に、文字列を指定して、現在の表示カルチャで年および/または月と日を抽出する必要があります。1 年、1 か月、または 3 つすべてしか得られないこともあります。私が得るものに応じて、私は異なる制御フローを持っています。
DateTime
これまでのところ、さまざまな文字列を;に解析することができました。それは私の問題ではありません。
私の問題は、実際に解析されたものを知りたいということです (つまり、1 か月または 1 年、またはその両方を取得したか)。
初期化されていないDateTime
デフォルトは01/01/0001
であり、すべてを無効な日付に設定することはできません99/99/9999
。
正規表現を行う必要があるのではないかと考えていましたが、DateTime
クラスは複数のカルチャの解析を提供します。これは、このプロジェクトで非常に重要です。
これを検索してみましたが、おそらく他の誰かが以前にこの問題を抱えていたに違いないため、適切な用語を使用していない可能性があります.
更新: これが私が持っているもののサンプルコードです:
string strIn = Console.ReadLine();
DateTimeStyles enStyles = DateTimeStyles.AllowInnerWhite | DateTimeStyles.AllowLeadingWhite | DateTimeStyles.AllowTrailingWhite | DateTimeStyles.AssumeLocal;
bFound = DateTime.TryParse(strIn, CultureInfo.CreateSpecificCulture("en-US"), enStyles, out cDT);
これで、何かが正常に解析された場合、bFound は true になります。ただし、日付のどの部分が正常に解析されたかを知る必要があります