テキストボックスに日付を入力するとき
20041004と入力しても04/10/04と入力しても
2004/10/04と入力しても
2004/10/04となるようにするには
どうしたらよいでしょうか?
04/10/4とか
04/9/10とか
1桁の場合ゼロが入らないケースもあります?
考えられるケースに場合わけして
それぞれのケースに対して適切な
処理を行えばいいでしょう。
入力インターフェースにTextBoxでなく
Masked Edit Controlを使えば
もう少し楽になるかもしれません。
すばやいレスありがとうございます。
>>フォレストさん
1桁の場合ゼロが入らないケースもあります!
>>ABCさん
Masked Edit Controlとはなんでしょうか?
勉強不足でごめんなさい。
> 1桁の場合ゼロが入らないケースもあります!
その場合、「2004123」というデータは、
「2004/1/23」と「2004/12/3」の2通りの解釈が可能ですが、
そのようなケースは、どうされるのでしょうか?
説明不足でした
入力を確定しフォーカスが外れた時に
yyyy/mm/dd
になるようにしたいのです。
入力時はスラッシュが無い場合は8桁入力にしたいです。
>入力時はスラッシュが無い場合は8桁入力にしたいです。
「したいです」というのは?
8桁ではなかった場合、msgboxなどを出して再入力を求めるということですか?
それとも自動でゼロをつけて8桁にすると言うことでしょうか?
もし後者なら、先ほどの「2004123」の場合、
「20040123」、「20041203」、「20041230」、「20041023」
と、日付が大幅に変わります。
どこにゼロがつくか、その辺の仕様はどうなっているのでしょうか?
仕様はこのようになっています。
西暦入力「YYYY/MM/DD」、「YYYYMMDD」、
「YY/MM/DD」、「YYMMDD」のいずれかとする。
「YYYYMMDD」、「YY/MM/DD」、「YYMMDD」による入力は、入力後に「YYYY/MM/DD」に
編集を行う。西暦年2桁入力の場合は、2000年代に編集する。
1900年代を入力する場合は、「YYYY」4桁で入力する。
日付として不正な値を入力した場合は、エラーとする。
そこまで仕様が決まってるならその通りに処理するだけでは?
先の例をもう一度。
> 1桁の場合ゼロが入らないケースもあります!
つまり、月または日の場合、「先頭の0を省略しても良い」のですよね?
という事は、
2004年1月23日 → 20040123 → 2004123
2004年12月3日 → 20041203 → 2004123
のように、同じパターンでの入力がありえるという事ですよね?
ならば「2004123」という入力は、
(1) 「2004/01/23」と変換
(2) 「2004/12/03」と変換
(3) "日付として不正な値"とみなす(不正というか、曖昧というか)
(4) その他
のうち、どのパターンに該当するのですか?
Dentalさん
この場合は(3)になります。
月または日で、「先頭の0を省略しても良い」のは
スラッシュが入っている場合のみです。
本当に説明が足りなくてごめんなさい。
大体場合わけが分かったところで
どの処理が分からないでしょうか?
質問を絞り込みましょう。
みなさんありがとうございました。
場合わけをして解決しました。
ツイート | ![]() |