将时间转换为十进制

时间:2016-02-01 09:44:48

标签: c# asp.net datetime decimal type-conversion

所有我必须做的就是找到员工的加班费。出勤表格以CSV文件格式存储,我已将数据保存到表格中。数据现场时间为12:10:00.0000000,每天工作时间为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)转换为Decimal。但它没有用。

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

3 个答案:

答案 0 :(得分:2)

TimeSpan解析为decimal并没有多大意义,因为时间不是的数字值

但您可以使用TotalHours property返回double

var total = tot_hours.TotalHours;

答案 1 :(得分:1)

是否需要将TimeSpan转换为小数?它无法做到,因为它不是数字。

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

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

答案 2 :(得分:0)

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

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