猿问

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

我在计算小时数时出错。您在下面看到的值取自数据库,我使用 C# 的任务是计算小时数的总和。


我列出了下面的问题:


1) 总错误时间,


2) 正如您在数据网格视图中看到的,有一个时间为 9.7 小时,但不可能一个小时有 70 分钟!我把C#代码和相关数据网格视图放在下面,你能帮我解决吗?


数据网格视图值:


24-07-2018  9:7     08:30

25-07-2018  0:0     08:30 

26-07-2018  9:42    08:30


Final sum-> 18:49    1:30

C# 代码:


     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();

}


临摹微笑
浏览 152回答 2
2回答

鸿蒙传说

在你的函数中 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)

温温酱

TotaleHourWork.Replace(",", ":");“9:7”表示9小时7分钟。“9,7”大概是指9,7小时,也就是9小时42分钟。所以无论你认为这有什么作用,它都没有。它只是破坏了您的大部分数据。停止进行字符串替换,获取您的日期,将其正确解析为 TimeSpans,然后使用它们计算您的数字。
随时随地看视频慕课网APP
我要回答