- ベストアンサー
VBでの日付入力値のフォーマットに関して
- VBでの日付入力値のフォーマットについて教えてください。
- 環境はVisual Basic 2008で、画面上にテキスト入力エリアを設け、日付を入力させたいと考えています。具体的には、あらかじめ"/"(スラッシュ)が表示されており、そこに数字のみを入力し、例えば20110101と入力された場合には2011/11/01と変換されて表示されるような形にしたいと思っています。しかし、現在のサンプルコードではうまくFormatができていません。どうも原因がわかりません。何が問題なのでしょうか?
- テキスト入力エリアの名前はTXT_発注日で、入力が変更された場合に処理が実行されるようになっています。質問が初歩的なものかもしれませんが、教えていただけますか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>If Len(Temp) = 8 Then >SetDateStyle = Format$(Temp, "YY/MM/DD") Tempが8文字の時、日付形式に変換しているが Tempはただの文字列なのでYYやMMは取得できないと思う。 SetDateStyle = Temp.Substring(0,2) & "/" & Temp.Substring(2,2) & "/" & Temp.Substring(4,2) ならどうですか?(試してはいません)
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
日付を操作者から受け取る方法(設計)は (1)年号+年月日の4ボックス用意 (2)年号なし(西暦)でん3ん月日の3ボックス (3)年月日コミの1ボックス (4)カレンダーコントロールをよういする (5)年月日で各々コンボを用意する などあるだろう。 本件は(3)らしいが、西暦か和暦(年号つき)か悩ましい。 それにテキストBだと文字列で入れるときスラッシュなど省く 式にすると、1月(1桁月)などで0つきに入力させる必要が出て、紛らわしい。 今件では、20110912のような入れ方を予定しているようだ(違う?)。 どうせ、近くにラベル等を設けて、そこでテキストに入れる内容の案内(指示)が必要だろう。 西暦和暦と年月日の区切りと表現方法(順序)の別など。 >あらかじめ"/"(スラッシュ)が表示されていて 初期値として??/??/??のスラッシュを表示したいようだが スラッシュを入れないで入力させるなら、スラッシュは消えてしまって、、意味無いのではないか。 スラッシュをまたいで年月日をそれぞれ入力するのは面倒では。 質問の表現を詳しく書いておいてほしい。 -- 質問の入力内容がよく理解できてない(例示説明など不十分)が、下記は参考になるだろう。 下記はテキストボックスに201203のように入れて、ボタンを押すと日付を表示するプログラム。 和暦にする部分は、見覚えるほか無いだろう。 Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click Dim x, dts As String Dim dt As DateTime x = TextBox1.Text dts = Microsoft.VisualBasic.Left(x, 4) & "/" & Mid(x, 5, 2) & "/" & Microsoft.VisualBasic.Right(x, 2) MsgBox(dts) dt = DateTime.Parse(dts) MsgBox(dt.ToString("yyyy/MM/dd")) '--- Dim cult As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("ja-JP") cult.DateTimeFormat.Calendar = New System.Globalization.JapaneseCalendar MsgBox(dt.ToString("ggyy年MM月dd日", cult)) End Sub
補足
ありがとうございました! やりたい内容が実現しました。