将值计算为百分比,并基于此值确定其他值的基础
本文关键字:于此值 其他 计算 百分比 | 更新日期: 2023-09-27 18:31:32
我有几个日期时间的列表。DateTime实际上是HH:mm:ss格式的字符串,我将其转换为DateTime。
从这个列表中,我检索最大值(以分钟为单位)
我计算总分钟数如下:
//t is a DateTime
Double totalMin = TimeSpan.Parse(t.ToString()).TotalMinutes;
最大值(以分钟为单位)应用作"100%"值。我已经计算了列表的最大值。
这意味着列表中的所有其他值(也以分钟为单位)将根据此值进行计算。换句话说,其他较低的值必须在此最大值上缩放。
这将在条形图中使用。因此,最大值将占用最多的空间,然后是较低的值。
我究竟该怎么做?
谢谢彼得·
您想知道如何计算百分比吗?将电流除以最大值,然后乘以 100。然后,您可以根据需要设置百分比格式(例如"20%","20.2%"等)。
Double max = 200d;
Double current = 23d;
Double percent = current / max * 100;
时间跨度是两个日期时间之间的差值,在某个时间单位中。 您正在解析日期时间。 你会得到一个 FormatException:
Double UhOh = TimeSpan.Parse(DateTime.Now.ToString()).TotalMinutes;
结果在:
System.FormatException: "Input string was not in a correct format."
现在要回答你的问题,你需要另一个数据:另一个日期时间,以便在几分钟内找到这两个点之间的差异。
假设您想使用:
DateTime.Now
这将起作用:
DateTime t = new DateTime(2012,4,19,0,0,0);
TimeSpan ts = DateTime.Now - t;
Double mins = ts.TotalMinutes;
希望有帮助。(:
您正在解析Timespan
并将DateTime
转换为实际上不需要的字符串。
你的意思是这样吗
List<DateTime> lstdt = new List<DateTime>() {
new DateTime(2010,5,5,1,10,0),
new DateTime(2011,5,5,2,10,0),
new DateTime(2010,8,5,1,10,0),
new DateTime(2010,5,5,1,10,0),
new DateTime(2011,11,5,1,10,0),
new DateTime(2010,12,5,1,10,0),
};
double maxval = lstdt.Max(c => c.TimeOfDay.TotalMinutes);
List<double> lstpercent = lstdt.Select(d1 => d1.TimeOfDay.TotalMinutes/maxval *100.00).ToList<double>();