将时间转换为十进制

Converting Time to decimal

我所要做的就是找到员工的加班时间。出勤 sheet 以 CSV 文件的形式出现,我已经将数据保存到 table。数据 Field hours 为 12:10:00.0000000,The Working Hour per day 为 11:00:00.0000000。我已经使用 Timespan 计算了这两次之间的差异。

   DateTime date, hours, working_hours ;
   TimeSpan ot_hours = TimeSpan.Zero;
   TimeSpan tot_hours = TimeSpan.Zero;
   if (hours > working_hours)
    {
       ot_hours = (hours - working_hours);
     }

此代码已设置为循环。完成循环后,我需要将总加班时间存入另一个变量。所以写

 tot_hours += tot_hours + ot_hours;

接下来我需要找到员工的加班工资金额。 我试图将此 tot_hours(TimeSpan ) 转换为十进制。但它没有用。

   tothrsvalue = Convert.ToDecimal(tot_hours);
   totalvalue = rate * tothrsvalue;

这里有人..请看看并帮助我..在此先感谢。

总计算部分如下:

         decimal basics = Convert.ToDecimal(dtamt.Rows[0]["Amount"].ToString());
                            decimal rate = 0;
                            rate = ((basics / 30) / 8);
                            txtrate.Text = rate.ToString("0.000");

                            tothrsvalue = Convert.ToDecimal(total);
                            totalvalue = rate * tothrsvalue;
                            txtamount.Text = totalvalue.ToString("0.000");
                            amt = Convert.ToDecimal(txtamount.Text);

TimeSpan 解析为 decimal 没有太大意义,因为时间根本不是数值 .

但您可以使用它的 TotalHours property,其中 returns double

var total = tot_hours.TotalHours;

您需要将 TimeSpan 转换为小数吗?它不能完成,因为它不是数字。

您可能需要 tot_hours.TotalHours,这是一个包含小数部分的双精度数。

tot_hours.TotalHours.ToString("#.00");

ot_hours 现在是 时间戳差异 = 秒! 将它们除以 60 得到分钟

示例:总计 = 2 分钟 = 120 秒等)