- ベストアンサー
数値を時刻に変換する方法
- VB2008でDataGridViewのCellに手入力された数値を時刻の書式に変換する方法について教えてください。
- 目的は数値をHH:mmの形式で表示することです。
- Format関数やCDate関数を試してみましたが、期待通りの結果が得られませんでした。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
どんな情報も強制的に変換するという方法であれば可能です。 ・絶対に4桁より大きい桁数は入力されない。 ・1桁でも入力があれば前ゼロを付加して強制的に変換する。 という方法です。 ------------------------------------------------------------------- Dim strTarget As String Dim strRet As String strTarget = "****" strTarget = strTarget.PadLeft(4, "0"c) strRet = strTarget.Substring(0, 2) + ":" + strTarget.Substring(2, 2) ------------------------------------------------------------------- 「9999」と入力された場合 strTarget = "****" の「****」に「9999」を代入します。 strRetには「99:99」と格納されます。 「9」と入力された場合 strTarget = "****" の「****」に「9」を代入します。 strRetには「00:09」と格納されます。 時間として判定したいと言うのであれば ------------------------------------------------------------------- Dim strTarget As String Dim strRet As String strTarget = "****" strTarget = strTarget.PadLeft(4, "0"c) '前2桁が0以上24未満か判定 If (CType(strTarget.Substring(0, 2), Integer) < 0 AndAlso CType(strTarget.Substring(0, 2), Integer) > 24) Then '成立しない為、処理を抜ける Exit Sub End If '後2桁が0以上59未満か判定 If (CType(strTarget.Substring(2, 2), Integer) < 0 AndAlso CType(strTarget.Substring(2, 2), Integer) > 59) Then '成立しない為、処理を抜ける Exit Sub End If strRet = strTarget.Substring(0, 2) + ":" + strTarget.Substring(2, 2) ------------------------------------------------------------------- もっと簡単にやりたい場合は・・・・ ------------------------------------------------------------------- Dim strTarget As String Dim strRet As String strTarget = "****" strTarget = strTarget.PadLeft(4, "0"c) strRet = strTarget.Substring(0, 2) + ":" + strTarget.Substring(2, 2) '日付として成立するか判定 If (IsDate("2009/1/1 " + strRet) = False) Then strRet = String.Empty '成立しない為、処理を抜ける Exit Sub End If -------------------------------------------------------------------
お礼
ありがとうございます。 目的どおり動作が行えるようになりました。 Format以外の関数など考えていましたが、 上記のように、文字列を分断して:を加えるなどの やり方もあったんですね。 後で、調べてみてさらに理解を深めようと思います。