2

ユーザーが希望する任意の形式で日付を入力できるテキストボックスを含むWPFウィンドウがあり、datetime変数でそれを解析する必要があります。さまざまな形式を試しましたが、datatime.parse で動作するものもあれば動作しないものもあります。そのような文字列についてはどうすればよいですか?

いくつかの例の形式 (年は必須ではありません):

  • 9月21日
  • 9月21日
  • 9月21日
  • 9月21日
  • 9月21日
  • 21/09
  • 21-09

適切な読み取り可能な日付である限り、ユーザーが気になるものは何でも、誰でもこれを手伝ってくれますか?

更新:コメントに基づいて、入力文字列の形式を変更しています....ユーザーが何らかの方法で入力できるが、常に日、月、年(オプション)の順に入力できる場合はどうなりますか.....それは管理可能ですか??

4

4 に答える 4

3

それは答えではなくアイデアです:

日付ピッカーを使用しないのはなぜですか。可能なすべての日付を有効な日付に変換しようとする多くのジョブを惜しまないでください。それも見栄えがします。WPFツールキットカレンダーデイトピッカーコントロールをご覧ください

于 2012-09-21T10:24:46.003 に答える
2

DateTime.ParseCultureInfo別の情報を指定しない限り、現在のもので動作します。意味:

21 Sept           // invalid
21st Sept         // invalid
21 September      // acceptable by `en` CultureInfo
21st September    // invalid
21 Sep            // acceptable by `en` CultureInfo
21/09             // invalid by `en` CultureInfo (09/21 is valid)
21-09             // invalid by `en` CultureInfo (09-21 is valid)

ただし、ユーザーがデータを入力するための優れた方法が必要な場合は、ユーザーが必要な正確な情報を手動で入力するのではなく、常に有効な値をキャッチするコントロールを使用することを検討してください。

于 2012-09-21T10:46:00.037 に答える
2

あなたがしていることをするのは無駄です。

ユーザーはn、日付を追加するいくつかの方法を挿入できます。彼が挿入したフォーマットをどのように判断しますか。

カレンダーはどこでも同じであり、ユーザーがどこにいても正しい日付を挿入するため、カレンダー コントロールを探します。その場合、calendarselecteddateや何らかの種類のプロパティを要求できます。

于 2012-09-21T10:27:57.073 に答える
2

私が知る限り、この問題に対する良い答えはありません。

DateTime.Parse日付が特定の形式であることに依然依存しています。必要に応じて、複数の CultureInfo を試して、そのうちの 1 つが機能することを期待することもできますが、それは、実際の人々が許容できる書き込み日付の小さなサブセットに対してのみ機能します。

普通の人が日付を書く可能な方法をすべて見つけ出すためにたくさんのコードを書いたとしても、グローバル化の問題は残るでしょう - いくつかの日付は、複数の方法で解釈するのに有効です。

04/05 <-- 今日は何の日?

これが単にそれを行うためである場合を除きます。最善の方法は、単純に日付ピッカー コントロールなどを提供して、ユーザーが簡単に日付を取得できるようにすることだと思います。その短い-あなたが期待する日付形式を示してください。

于 2012-09-21T10:28:31.193 に答える