2016-04-18 9 views
1

DataGridview内の2つのセルの間の正確な値を取得するのに苦労しています。どちらの値もHH:mm:ss.fff形式ですが、違いを計算しようとすると、テキストボックスに.fffを表示できません。何らかの形でフォーマットする必要があることは知っていますが、試してみるとエラーが出ます。私のコードは以下の通りです。とにかく日付や年を表示する必要はなく、セル内のデータは常にHH:mm:ss.fffで表示されます。VBの2 "HH:mm:ss.fff"値の違いを調べたいと思っています

ありがとうございます。ここではVisual Studioの2013

Dim value2 As DateTime = DateTime.Parse(dgvConvert(3, 1).Value) 
    'value is in "HH:mm:ss.fff" format i.e 08:01:05.900 
    Dim value1 As DateTime = DateTime.Parse(dgvConvert(3, 2).Value) 
    'value is in "HH:mm:ss.fff" format i.e 08:01:50.000 

    Dim timespan2 As DateTime = DateTime.Parse(value2) 
    Dim timespan1 As DateTime = DateTime.Parse(value1) 

    Dim duration As TimeSpan = timespan1 - timespan2 

    Dim duration1 As String = duration.ToString 

    txtResult.Text = duration1.ToString 
    'result is "00:00:05" but i am trying to get "00:00:05.900" 
    'txtResult.Text = duration(format("HH:mm:ss.fff")) does not work. 

を使用すると、あなたの細胞は、常に時間値が含まれている場合は、あなたがTimeSpan structureにそれらを解析することができます私はDataGridViewの

Private Sub btnLoadFileToConvert_Click(sender As Object, e As EventArgs) Handles btnLoadFileToConvert.Click 
    ' MessageBox.Show("Make sure your file only contains numbers in the first coumn", "Check File") 
    dgvConvert.Rows.Clear() 
    Dim TextLine As String = "" 
    Dim SplitLine() As String 
    Dim fname As String = txtFileToConvert.Text 
    If System.IO.File.Exists(fname) = True Then 
     Dim objReader1 As New System.IO.StreamReader(fname) 
     Do While objReader1.Peek() <> -1 
      TextLine = objReader1.ReadLine() 
      SplitLine = Split(TextLine, ",") 
      Me.dgvConvert.Rows.Add(SplitLine) 
     Loop 
     objReader1.Close() 
     objReader1.Dispose() 
    Else 
     MsgBox("File Does Not Exist") 

    End If 
    dgvConvert.RowCount = 6001 
+1

なぜあなたが解析ん2回目? –

+0

ここに格納されているDateTime値の場合は、どうして解析するのですか? – Plutonix

+0

コンパイラの助けとなるよう、ソースコードファイルの先頭にPut Strictを入れてください。 –

答えて

1

にCSVを書き込むために使用するコードです。それから、一方を他方から引くことができます。

あなたはこの点に注意してください(フォーマットを受け入れるoverload of .ToStringを使用することができます(ミリ秒)を示す値を表示したい場合は、いくつかの文字をエスケープする必要があるとして、DateTime書式にわずかに異なっている。

'values for debug 
    Dim cell2Value = "08:01:05.900" 'dgvConvert(3, 1).Value.ToString 
    Dim cell1Value = "08:01:50.000" 'dgvConvert(3, 2).Value.ToString 

    Dim value2 = TimeSpan.Parse(cell2Value) 
    Dim value1 = TimeSpan.Parse(cell1Value) 

    TextBox1.Text = (value1 - value2).ToString("hh\:mm\:ss\.fff") 
+0

マット。ありがとう、あなたのコメントは私に再チェックをさせました。私はお詫び申し上げますが、私は名前と時間(時間は "HH:mm:ss.000"である)を含むcsvの保存ファイルから文字列としてデータを取り込んでいます。ここでは、私がcsvをdgvConvertに読み込むコードを示します。 –

+0

投稿したコードはうまくいくはずです –

+0

チャンピオンのような作品!どうもありがとうございます! –

関連する問題