[VB.NET]8ケタの文字列を日付に変換する 説明編
前記事の例
Dim moziRetu As String = Textbox1.textDim hiduke As DateIf 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
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
返信削除