我目前正在尝试从时差中减去一个值。这种差异代表一个人工作了多少小时。价值是休息和午餐。这将从差中减去。
当我尝试将数据发送到数据库时,错误生成“无法转换类型为System.TimeSpan的对象”
DateTime b = DateTime.Parse(StartTimeddl.Text);
DateTime c = DateTime.Parse(EndTimeddl.Text);
decimal d = Convert.ToDecimal(BreakDurationddl.Text);
decimal f = Convert.ToDecimal(LunchDurationddl.Text);
decimal totalBreak = f + d;
decimal fullBreakTime = 0;
TimeSpan difference = (c.Subtract(b));
cmd.Parameters.Add("@Total_Hours_Day", SqlDbType.Decimal).Value = difference.Hours;
cmd.ExecuteNonQuery();
fullBreakTime = totalBreak + Convert.ToDecimal(difference);
答案 0 :(得分:3)
您遇到的错误是您尝试将TimeSpan
转换为小数的那一行。相反,您应该转换TotalHours
中的TimeSpan
:
fullBreakTime = totalBreak + Convert.ToDecimal(difference.TotalHours);
但是根据您的评论,
我正在尝试从总差异中减去总中断时间。例如,如果某人一天工作8个小时,但有1个小时的休息时间,则总计为7
您可以简单地计算工作总小时数,然后减去休息时间(请注意,我在这里使用double
而不是decimal
,因为TimeSpan
用于{ {1}}):
TotalHours
答案 1 :(得分:1)
您正在尝试将Timespan转换为Decimal,而应该是
Convert.ToDecimal(difference.TotalHours)