[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 String
        Dim datestr As String = String.Empty
        Dim temp As Integer = 0
        Dim dateTemp As Date
        For i = 0 To hatiketa.Length - 1


            If Integer.TryParse(hatiketa.Substring(i, 1), Temp) Then


                datestr &= Temp
            End If
        Next


        If datestr.Length = 8 Then
            datestr = Format(CInt(datestr), "####/##/##")


            If Date.TryParse(datestr, dateTemp) Then


                Select Case mode
                    Case "intdate"
                        datestr = Format(dateTemp, "yyyy年MM月dd日")
                    Case "dateint"
                        datestr = Format(dateTemp, "yyyyMMdd")
                End Select
            End If
        End If


        Return datestr

    End Function

コメント

  1. Thanks for posting this info. I just want to let you know that I just check out your site and I find it very interesting and informative. I can't wait to read lots of your posts. psiprograms.com

    返信削除

コメントを投稿

このブログの人気の投稿

[VB.NET]テキスト等チェンジイベントを有効化・無効化する

[VB.NET]コンボボックスの1アイテムに2つ以上の値を持たせる

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