为了账号安全,请及时绑定邮箱和手机立即绑定

使用不正确的 C# 计算 24 小时格式的小时总和

使用不正确的 C# 计算 24 小时格式的小时总和

C#
临摹微笑 2021-10-31 18:58:20
我在计算小时数时出错。您在下面看到的值取自数据库,我使用 C# 的任务是计算小时数的总和。我列出了下面的问题:1) 总错误时间,2) 正如您在数据网格视图中看到的,有一个时间为 9.7 小时,但不可能一个小时有 70 分钟!我把C#代码和相关数据网格视图放在下面,你能帮我解决吗?数据网格视图值:24-07-2018  9:7     08:3025-07-2018  0:0     08:30 26-07-2018  9:42    08:30Final sum-> 18:49    1:30C# 代码:     private void buttonCarica_Click(object sender, EventArgs e)     {       dataGridViewPrincipale.Hide();       dataGridViewSecondario.Hide();       resetDataGrid();       string StartDate = dateTimePickerInizio.Value.Date.ToString("dd-MM-yy");       string EndData = dateTimePickerFine.Value.Date.ToString("dd-MM-yy");       Utente utemp = new Utente(comboBoxUtenti.Text);       timemanager tm = new timemanager(utemp);       PeopleController r = new PeopleController(utemp);       DataTable dt = tm.CaricaDataeTotaleHour(StartDate, EndData);       if (dt.Rows.Count == 0)       {         reset();         MessageBox.Show("\n ATTENZIONE:  " + comboBoxUtenti.Text + " in questo range di tempo non ha effettuato marcature");       }       else       {         labelTotaleHourWork.Show();         labelTotaleHourWorkMod.Show();         labelTotaleHourtimemanagerMod.Show();         labelTotaletimemanager.Show();         dataGridViewPrincipale.Show();         TimeSpan tempoSpanTotaleHourWork = TimeSpan.Zero;         foreach (DataRow dr in dt.Rows)         {           String TotaleHourWork = r.CaricaHourGiornaliere(dr["Data"].ToString());           if (TotaleHour.Equals("0") == false)           {             TotaleHourWork = TotaleHourWork.Replace(",", ":");             tempoSpanTotaleHourWork = SommaHour(TotaleHourWork, tempoSpanTotaleHourWork);           }           if (tempoSpanTotaleHourWork == TimeSpan.Zero)           {             TotaleHourWork = "0";           }函数 CheckValue.ConversioneTimeSpantoString :public static String ConversioneTimeSpantoString(TimeSpan tm){      return "" + tm.Hours.ToString().Replace("-", "").ToString() + ":" + tm.Minutes.ToString().Replace("-", "").ToString();}
查看完整描述

2 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

在你的函数中 public static String ConversioneTimeSpantoString(TimeSpan tm)

改变

tm.Hours //-> the remining hours in this timespan (minus days)

tm.TotalHours //-> the sum of all hours in this timespan (included days, months, years)


查看完整回答
反对 回复 2021-10-31
?
温温酱

TA贡献1752条经验 获得超4个赞

TotaleHourWork.Replace(",", ":");

“9:7”表示9小时7分钟。“9,7”大概是指9,7小时,也就是9小时42分钟。

所以无论你认为这有什么作用,它都没有。它只是破坏了您的大部分数据。

停止进行字符串替换,获取您的日期,将其正确解析为 TimeSpans,然后使用它们计算您的数字。


查看完整回答
反对 回复 2021-10-31
  • 2 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信