Sql 如何汇总datagridview vb.net中的所有datetime/time

Sql 如何汇总datagridview vb.net中的所有datetime/time,sql,vb.net,Sql,Vb.net,我一直想知道如何转换这行计算整数和的代码 我需要汇总来自datagridview的所有列数据,该数据采用timespan格式(0,0,0) 我犯了个错误 System.FormatException:'输入字符串的格式不正确。' 有什么帮助吗 txtTotalTime.Text = ( From row As DataGridViewRow In DataGridView3.Rows Where row.Cells(2).FormattedValue.ToString() <&g

我一直想知道如何转换这行计算整数和的代码

我需要汇总来自datagridview的所有列数据,该数据采用timespan格式(0,0,0)

我犯了个错误

System.FormatException:'输入字符串的格式不正确。'

有什么帮助吗

txtTotalTime.Text = 
 ( From row As DataGridViewRow In DataGridView3.Rows
   Where row.Cells(2).FormattedValue.ToString() <> String.Empty
   Select Convert.ToInt32(row.Cells(2).FormattedValue)
 ).Sum().ToString()
txtTotalTime.Text=
(来自DataGridView3.Rows中作为DataGridViewRow的行)
其中row.Cells(2).FormattedValue.ToString()字符串。为空
选择Convert.ToInt32(行单元格(2).FormattedValue)
).Sum().ToString()
Sum()
无法处理
时间跨度的集。所以这里的诀窍是:

  • 使用自定义格式解析调用
    DateTime.ParseExact
    的每个条目(我假设您的是
    h,m,s
  • 若要将其转换为“记号”,请输入一个
    长的
  • 将长值传递给
    Sum()
  • 最后将结果转换为时间跨度
  • 下面是一段工作代码:

    Dim ts As TimeSpan = New TimeSpan(
            (From row As DataGridViewRow In DataGridView3.Rows
             Where row.Cells(2).FormattedValue.ToString() <> String.Empty
             Select DateTime.ParseExact(row.Cells(2).FormattedValue, "h,m,s", Nothing).TimeOfDay.Ticks
                 ).Sum())
    txtTotalTime.Text = ts.ToString
    
    Dim ts As TimeSpan=新的TimeSpan(
    (来自DataGridView3.Rows中作为DataGridViewRow的行)
    其中row.Cells(2).FormattedValue.ToString()字符串。为空
    选择DateTime.ParseExact(row.Cells(2).FormattedValue,“h,m,s”,Nothing).TimeOfDay.Ticks
    ).Sum())
    txtTotalTime.Text=ts.ToString
    
    注意:
    Nothing
    作为格式提供程序传递到此处
    Globalization.CultureInfo.InvariantCulture
    也可以以同样的效果进行传递。

    我希望这有帮助(只是另一种方法)。这与阿梅西厄尔的做法是一致的

    注:如果一天的时间大于24小时。然后,它会发出EX:“1.00:05:09”

    
    将dgvrRow调整为DataGridViewRow
    点心作为时间跨度
    将tsTemp变暗为时间跨度
    TimeSpan.TryParse(“00:00:00”,tsSum)
    对于datagridview3.rows中的每一行
    strTemp=row.Cells(2).Value.ToString
    如果strTemp字符串为空,则
    tsTemp=DateTime.ParseExact(strTemp,“HH,mm,ss”,无任何内容)
    tsSum=tsSum.Add(tsTemp)
    如果结束
    下一个
    txtTotalTime.Text=tsSum.toString
    
    也尝试了此代码,但我无法将其转换-----------------Dim sum As Integer=0 For i As Integer=0转换为dataGridView1.Rows.Count()-1 Step+1 sum=sum+dataGridView1.Rows(i).Cells(2).Value Next textBoxSum.Text=sum.ToString()可能尝试使用
    Date.Parse
    (例如:)这对我不起作用。有没有另一种方法来计算datetime之和?例如,我只需要将datagridview列中的所有datetime求和(使用此格式08:42:32)。像“08:42:32”这样的字符串显然不能直接转换为整数。您要求和哪个值?小时、分钟、秒?展示一些列的真实示例。更可取的是,我们可以看到
    Value
    FormattedValue
    属性。我遇到一个错误,它说“字符串未被识别为有效的日期时间。”您使用的格式是什么?在您的问题中,它类似于
    h,m,s
    。这一行代码也一样,它说“字符串未被识别为有效的日期时间”。然后,将ParseExact语句中的格式更改为您期望的格式。例如:“HH,mm,ss”->“HH:mm:ss”如果你喜欢我们的一篇文章,请接受作为答案并投票。Thx.怎么做?抱歉,我昨天刚刚创建了这个帐户。很高兴你的答案被OP接受。我仍然想知道@FredLorenz为什么写
    格式(0,0,0)
    
            Dim dgvrRow As DataGridViewRow  
            Dim tsSum As TimeSpan  
            Dim tsTemp As TimeSpan          
    
            TimeSpan.TryParse("00:00:00", tsSum) 
    
            For Each row In datagridview3.rows  
                strTemp = row.Cells(2).Value.ToString  
                If strTemp <> String.Empty Then  
                    tsTemp = DateTime.ParseExact(strTemp, "HH,mm,ss", Nothing).TimeOfDay  
    
                    tsSum = tsSum.Add(tsTemp)  
                End If  
            Next  
    
            txtTotalTime.Text = tsSum.toString