検索構文の一部として自由形式の日付を使用しています。文字列から日付を解析する必要がありますが、実際に指定されている日付の部分のみを保持します。たとえば、「2010年11月1日」は特定の日付ですが、「2010年11月」は「2010年11月1日」から「2010年11月30日」までの日付の範囲です。
残念ながら、DateTime.Parse
友人はこれらの日付を同じように解析しますDateTime
:
DateTime.Parse("November 1, 2010") // == {11/1/2010 12:00:00 AM}
DateTime.Parse("November, 2010") // == {11/1/2010 12:00:00 AM}
DateTime
のどの部分が実際に解析され、どの部分がパーサーによって推測されたかを知る必要があります。基本的に、私は必要DateTime.Parse("November, 2010") == {11/-1/2010 -1:-1:-1}
です; 次に、日の部分が欠落していることを確認し、月全体をカバーする日付の範囲を計算できます。
(内部的には、C#には日付を解析して必要な情報を正確に保持するクラスDateTimeParse
とDateTimeResult
クラスがありますが、日付がパブリックインターフェイスに戻るまでに、削除されています。実際にそうでない限り、これらのクラスに反映することは避けたいと思います。唯一のルートです。)
DateTime.Parse
日付の解析に使用した形式を教えてもらう方法はありますか?または、返品DateTime
された部品に不特定の部品のプレースホルダーを含めることはできますか?別の日付パーサーを使用することもできますが、内部のものと同じくらい信頼性が高く、ロケールに柔軟に対応できるようにしたいと思います。前もって感謝します。
編集:私も試しましたが、処理できるParseExact
すべての形式を列挙するParse
ことはほぼ不可能のようです。Parse
実際には、によって返されるよりも多くのフォーマットを受け入れますDateTimeFormatInfo.GetAllDateTimePatterns
。これは、私が見つけることができるのとほぼ同じくらい標準的なソースです。