【发布时间】:2017-11-10 16:55:34
【问题描述】:
我已经搜索过这个问题,但很遗憾找不到正确的答案。
我想计算在 10 个不同的日子里花在做某事上的平均时间,我有 10 个datetimepicker 用于开始时间,还有 10 个datetimepicker 用于每天的结束时间(总共 20 个datetimepicker)。
现在我想获得这 10 天平均花费在工作上的时间。
这是我每天计算timespan所做的,现在我不知道如何计算这些timespans的平均值
当然我想知道有没有更短的方法来完成这项工作?
DateTime Dt1 = dateTimePicker1.Value;
DateTime Dt2 = dateTimePicker2.Value;
.
.
.
DateTime Dt20 = dateTimePicker20.Value;
TimeSpan Day1 = DateTime.Parse(Dt11.TimeOfDay.ToString()).Subtract(DateTime.Parse(Dt1.TimeOfDay.ToString()));
TimeSpan Day2 = DateTime.Parse(Dt12.TimeOfDay.ToString()).Subtract(DateTime.Parse(Dt2.TimeOfDay.ToString()));
.
.
.
TimeSpan Day10 = DateTime.Parse(Dt20.TimeOfDay.ToString()).Subtract(DateTime.Parse(Dt10.TimeOfDay.ToString()));
我想求 Day1 到 Day10 的平均值
【问题讨论】:
-
如果你有一个数组或一个列表而不是 20 个单独的变量,那会容易得多。 (不清楚为什么要格式化
TimeSpan值然后重新解析它们。) -
将它们全部相加并除以数字。正如 skeet 所说 - 把它们放在一个数组中
-
我很好奇。为什么你决定创建一个字符串只是为了再次解析它?我对你的动机非常感兴趣,因为我一直都在看到这种方法,而且它从来都不是必需的,也不是可取的。
-
另外,您是否保证所有值对都在同一日期?或者你能有一对跨越午夜的,比如晚上 11 点到凌晨 1 点之间的两个小时?
-
如果所有的 DateTime 都有相同的 Date,为什么要把它去掉?无论如何,您只对差异感兴趣。所以
var MyTimeSpan = myDateTime1 - myDateTime2;似乎在没有TimeOfDay或ToString()的情况下可以解决问题(最后一个确实非常无用,但由于某种原因非常常见)。
标签: c# datetimepicker timespan