- - PR -
Format関数について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2002-07-29 16:17
VB.NETでWindowsアプリケーションを作成しています。
フォームのテキストボックスに入力されたデータを、 Format関数を使って日付型(2002/07/29のような) に変換したいのです。 VB6のように、 Format(TxtYmd.Text, "yyyy/MM/dd") と書いたのですが正しく返ってきませんでした。 初歩的なことですが、どのように書けばいいのかわからず 困っています。誰かご存知ないでしょうか? | ||||
|
投稿日時: 2002-07-29 16:45
>VB6のように、
>Format(TxtYmd.Text, "yyyy/MM/dd") >と書いたのですが正しく返ってきませんでした。 フォーマット関数の中の文字列をDate型にしてみてください。 Label1.Text=Format(CType(TextBox1.Text,Date),"yyyy/MM/dd") といった具合です。 | ||||
|
投稿日時: 2002-07-29 16:55
WEIWEIさん、ありがとうございます。
私の説明不足で申し訳ないのですが、 テキストボックスには「/」抜きの(20020729のような) 入力も可能なんです。 その「/」抜きの場合には、 CType(TextBox1.Text,Date) が使えないようで・・・。 何か方法はないものでしょうか。再びよろしくお願いします。 | ||||
|
投稿日時: 2002-07-29 17:23
>テキストボックスには「/」抜きの(20020729のような)
>入力も可能なんです。 >その「/」抜きの場合には、 >CType(TextBox1.Text,Date) が使えないようで・・・。 これって、VB6でもそのままではエラーが出たと思いますよ。 こんなコードでどうでしょうか? Dim n As Integer Dim MyDate As Date Dim MyYear, MyMonth, MyDay As Integer n = InStr(TextBox1.Text, "/") If n = 0 Then MyYear = CType(Microsoft.VisualBasic.Left(TextBox1.Text, 4), Integer) MyMonth = CType(Microsoft.VisualBasic.Mid(TextBox1.Text, 5, 2), Integer) MyDay = CType(Microsoft.VisualBasic.Right(TextBox1.Text, 2), Integer) MyDate = DateSerial(MyYear, MyMonth, MyDay) Else MyDate = CType(TextBox1.Text, Date) End If Label1.Text = Format(MyDate, "yyyy/MM/dd") あと、InStr関数の結果で、文字を分割して場合分けすると、他の入力形式にも対応すると思います。 | ||||
|
投稿日時: 2002-07-29 17:49
ありがとうございました!
欲しかった答えを得ることができました。 助けていただいて本当にありがとうございます。 | ||||
|
投稿日時: 2002-07-30 17:05
VB.NETで新しく作っているのでしたら、ユーザーにテキストボックスに書かせるのではなく、DateTimePickerを利用されてはいかがですか。クリックするとカレンダーが表示され、存在しない日付は入力不可能になります。プロパティーValueではDateTime型が取れるので、String型への変換も容易です。昔のように、「最初にカレンダー以外の場所をクリックしたら落ちる」とか、「コントロールの上でIMEをONして、でたらめにキーを押したら落ちる」とかいった不具合も修正されています。 | ||||
|
投稿日時: 2002-07-30 17:48
そんな便利な機能があるなんて知りませんでした。
是非一度ためしてみたいと思います。 皆さん知恵をお貸しいただいてありがとうございました。 | ||||
|
投稿日時: 2002-08-07 16:39
外してたらごめんなさい。
VB6と同じと云うことであれば format(TEXTBOX.TEXT,"0000/00/00") では? |
1