0

いくつかの DateTimes のリストがあります。DateTime は、実際には HH:mm:ss 形式の文字列で、DateTime に変換されます。

このリストから、最大値を取得します (分単位)

次のように合計分を計算します。

//t is a DateTime
Double totalMin = TimeSpan.Parse(t.ToString()).TotalMinutes;

最大値 (分単位) を「100%」値として使用する必要があります。私はすでにリストの最大値を計算しました。

リスト内の他のすべての値 (分単位) は、この値に基づいて計算されます。他の低い値は、この最大値に合わせて調整する必要があります。

これは棒グラフで使用されます。したがって、最大の値が最も多くのスペースを占め、その後に低い値が続きます。

どうすれば正確にこれを行うことができますか?

ありがとうピーターP。

4

3 に答える 3

3

パーセンテージの計算方法を知りたいですか?現在を最大値で割り、100 を掛けます。次に、必要に応じてパーセンテージをフォーマットできます (「20%」、「20.2%」など)。

Double max = 200d;
Double current = 23d;

Double percent = current / max * 100;
于 2012-04-19T08:00:22.843 に答える
1

Timespan は、ある時間単位での 2 つの DateTime 間の差です。DateTime を解析しています。FormatException が発生します。

Double UhOh = TimeSpan.Parse(DateTime.Now.ToString()).TotalMinutes;

結果:

System.FormatException: "Input string was not in a correct format."

あなたの質問に答えるには、別のデータが必要になります。これらの 2 つのポイントの差 (分) を見つけるための別の DateTime です。

あなたが使用したいと仮定しましょう:

DateTime.Now

これはうまくいきます:

DateTime t = new DateTime(2012,4,19,0,0,0);
TimeSpan ts = DateTime.Now - t;
Double mins = ts.TotalMinutes;

それが役立つことを願っています。(:

于 2012-04-19T08:11:01.953 に答える
0

実際には必要のない文字列を解析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>();
于 2012-04-19T08:05:09.773 に答える