2017-01-24 9 views
0

Webフォームの各ユーザーの全期間を計算しています。私はすでにデータベースに保存されているユーザーのログインとログアウト時間を持っています。しかし誰でも計算を行う方法についてのアイデアはありますか?私はASP.NET C#を使用しています。ASP.NETでの各ユーザーの全体的なログイン期間を計算するC#

+2

データベースに対してクエリを実行していますか? – Smartis

+3

Substract終了からの開始 – stuartd

+3

またはC#では、Timespan timespan = logoutTime- loginTime; – bazz

答えて

4

あなたがしなければならないことは、各レコードの開始時間から終了時間を差し引いて結果を合計することです。私はあなたの設定に応じて激しく変化するので、データベースからデータを取得する方法を理解できるようにします。

これで、ログインとログアウトのDateTimesを持つクラスにデータベースを読み込んでいるとしましょう。そして既にあなたがそれらをメモリに読み込んだと仮定して、今度は関連するログイン期間のリストを持っています。

var totalTime = new TimeSpan(loginPeriods.Select(x => x.Logout - x.Login).Sum(x => x.Ticks)); 

ここで行ったことは、ログアウトとログインの間の時間です。その後、その時間量に等しい新しいTimeSpanオブジェクトを作成しました。これはTimeSpanに便利なプロパティ、TotalHoursがあるためです。

最後に、ASP.NETを使用しているため、ページに印刷するために、これをテキストに変換する必要があります。

string.Format("{0:n0}", totalTime.TotalHours);//Returns something like 1,201 

編集:は、私は一人でこれを残すことができなかった自分自身です。私はIEnumerable < TimeSpan> .Sum()の不足に悩まされました。だから私は本当にすばらしかった。

このように参照された名前空間でこれを少し上品に扱うことができます。

string.Format("{0:n0}", loginPeriods.Select(x => x.Logout - x.Login).Sum().TotalHours) 
関連する問題