投稿

ラベル(Format)が付いた投稿を表示しています

[VB.NET]8ケタの文字列を日付に変換する 説明編

前記事の例   Dim moziRetu As String = Textbox1.text    Dim hiduke As Date   If Date.TryParse( Format(CInt(moziRetu), "####/##/##") , hiduke) Then        TextBox1.Text = Format(hiduke, "yyyy/MM/dd")   End If 説明 CInt(文字など)・・・ 文字などを数値型に変換する。文字が数字に変換できない場合エラーが出ます。 Format( 数, "表示方式")・・・ 主に数字を好きな表示方式に変える。 "####/##/##" こうすると#には数が当てはめられる。間に文字を入れたり計算式を入れたりと 自由度が 高いです。 型.TryParse( 文字など, 変数)・・・ 文字などを変換したい型に変換しようと試みる。変換できると変数に代入される。 変換出来なくてもエラーは出ず、変数には何も代入されない。Ifと組み合わせると変換出来たら分岐するというように使えて便利です。 コメント Formatで/スラッシュを入れた時点で日付表示は出来ているが、 ありえない年月日になってしまう可能性があるため(20月63日など)、 実際にTryParseで日付型に変えてから表示しています。 こういうの結構忘れます... 以下完成形のメモ(相互変換可能)     ''' <summary>     ''' 年月日相互変換     ''' </summary>     ''' <param name="hatiketa"></param>     ''' <returns></returns>     Private Function DateConvert(ByVal hatiketa As String, ByVal mode As String) As St...

[VB.NET]8ケタの文字列を日付に変換する

テキストボックス1に入力された8ケタの数字(文字列)を日付(0000/00/00)に変換する 例   修正済み '変数宣言   Dim moziRetu As String =  Textbox1.text     Dim hiduke As Date '文字列を数値型に変換。/スラッシュを挿入 'それが日付型に変換できるか確認し、変換出来たらテキストボックスに表示   If Date.TryParse( Format(CInt(moziRetu), "####/##/##") , hiduke) Then          TextBox1.Text = Format(hiduke, "yyyy/MM/dd")   End If 説明 細かな説明は後日します。ポイントは、 日付型に変換するには1111/11/11のようにスラッシュが入っていなければならない ということです。そのため文字型を一旦数値型にしてFormatをつかい/スラッシュを挿入しています。 コメント 個人的にプログラムコードが長く行が増えるほど読む気がなくなります。(上司には短くするより見やすさをと助言をもらってますがまだ慣れません^^;) なので省きましたが、入力された文字が数字ではなかった場合や、間に数字でないものが入っていた場合のエラー防止に下記のコードを先頭に挿入すると便利です。 変数宣言   Dim mozi As String = String.Empty ループして一文字ずつ取り出し、   For i = 0 To Len(TextBox1.Text) - 1         mozi = TextBox1.Text.Substring( i, 1) 数値型に変換できるか確認し、(変換はせずに)結合          If IsNumeric(mozi) Then         ...