日付を/で区切るには?

解決


村長  2004-10-04 17:18:24  No: 116749  IP: [192.*.*.*]

テキストボックスに日付を入力するとき
20041004と入力しても04/10/04と入力しても
2004/10/04と入力しても
2004/10/04となるようにするには
どうしたらよいでしょうか?

編集 削除
フォレスト  2004-10-04 17:29:46  No: 116750  IP: [192.*.*.*]

04/10/4とか
04/9/10とか
1桁の場合ゼロが入らないケースもあります?

編集 削除
ABC  2004-10-04 17:38:07  No: 116751  IP: [192.*.*.*]

考えられるケースに場合わけして
それぞれのケースに対して適切な
処理を行えばいいでしょう。

入力インターフェースにTextBoxでなく
Masked Edit Controlを使えば
もう少し楽になるかもしれません。

編集 削除
村長  2004-10-04 17:53:05  No: 116752  IP: [192.*.*.*]

すばやいレスありがとうございます。

>>フォレストさん
1桁の場合ゼロが入らないケースもあります!

>>ABCさん
Masked Edit Controlとはなんでしょうか?
勉強不足でごめんなさい。

編集 削除
魔界の仮面弁士  2004-10-04 18:12:49  No: 116753  IP: [192.*.*.*]

> 1桁の場合ゼロが入らないケースもあります!
その場合、「2004123」というデータは、
「2004/1/23」と「2004/12/3」の2通りの解釈が可能ですが、
そのようなケースは、どうされるのでしょうか?

編集 削除
村長  2004-10-04 18:19:17  No: 116754  IP: [192.*.*.*]

説明不足でした

入力を確定しフォーカスが外れた時に
yyyy/mm/dd
になるようにしたいのです。
入力時はスラッシュが無い場合は8桁入力にしたいです。

編集 削除
フォレスト  2004-10-04 18:34:08  No: 116755  IP: [192.*.*.*]

>入力時はスラッシュが無い場合は8桁入力にしたいです。
「したいです」というのは?
8桁ではなかった場合、msgboxなどを出して再入力を求めるということですか?
それとも自動でゼロをつけて8桁にすると言うことでしょうか?

もし後者なら、先ほどの「2004123」の場合、
「20040123」、「20041203」、「20041230」、「20041023」
と、日付が大幅に変わります。
どこにゼロがつくか、その辺の仕様はどうなっているのでしょうか?

編集 削除
村長  2004-10-04 18:42:04  No: 116756  IP: [192.*.*.*]

仕様はこのようになっています。

西暦入力「YYYY/MM/DD」、「YYYYMMDD」、
「YY/MM/DD」、「YYMMDD」のいずれかとする。
「YYYYMMDD」、「YY/MM/DD」、「YYMMDD」による入力は、入力後に「YYYY/MM/DD」に
編集を行う。西暦年2桁入力の場合は、2000年代に編集する。
1900年代を入力する場合は、「YYYY」4桁で入力する。
日付として不正な値を入力した場合は、エラーとする。

編集 削除
nanashi  2004-10-04 18:53:00  No: 116757  IP: [192.*.*.*]

そこまで仕様が決まってるならその通りに処理するだけでは?

編集 削除
Dental  2004-10-04 19:54:48  No: 116758  IP: [192.*.*.*]

先の例をもう一度。

> 1桁の場合ゼロが入らないケースもあります!
つまり、月または日の場合、「先頭の0を省略しても良い」のですよね?

という事は、
 2004年1月23日 → 20040123 → 2004123
 2004年12月3日 → 20041203 → 2004123
のように、同じパターンでの入力がありえるという事ですよね?


ならば「2004123」という入力は、
 (1) 「2004/01/23」と変換
 (2) 「2004/12/03」と変換
 (3) "日付として不正な値"とみなす(不正というか、曖昧というか)
 (4) その他
のうち、どのパターンに該当するのですか?

編集 削除
村長  2004-10-04 20:43:53  No: 116759  IP: [192.*.*.*]

Dentalさん

この場合は(3)になります。

月または日で、「先頭の0を省略しても良い」のは
スラッシュが入っている場合のみです。
本当に説明が足りなくてごめんなさい。

編集 削除
ABC  2004-10-04 21:45:56  No: 116760  IP: [192.*.*.*]

大体場合わけが分かったところで
どの処理が分からないでしょうか?
質問を絞り込みましょう。

編集 削除
村長  2004-10-05 09:29:26  No: 116761  IP: [192.*.*.*]

みなさんありがとうございました。

場合わけをして解決しました。

編集 削除