2017-01-24 27 views
0

我正在計算webform中每個用戶的總體持續時間。我已將用戶的登錄和註銷時間存儲在數據庫中。但是任何人都有關於如何進行計算的想法?我正在使用ASP.NET C#在ASP.NET中計算每個用戶的整體登錄時間C#

+2

對您的數據庫運行查詢? – Smartis

+3

從結束開始摘除 – stuartd

+3

或者在C#中,Timespan timespan = logoutTime-loginTime; – bazz

回答

4

您只需從每個記錄的開始時間中扣除結束時間,然後對結果進行求和。我將讓你弄清楚如何從你的數據庫獲取數據,因爲它取決於你的設置而變化很大。

因此可以說你正在讀你的數據庫到一個DateTimes類的Login和Logout類。假設你已經將它們讀入內存,現在我們有一個相關登錄週期的列表。

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 

編輯:作爲我自己,我不能離開這個孤單。我對.NET中缺少IEnumerable(TimeSpan> .Sum())感到困擾。所以我做了我自己的快速。

public static TimeSpan Sum(this IEnumerable<TimeSpan> timespans) => 
     new TimeSpan(timespans.Sum(x => x.Ticks)); 

因此,在引用名稱空間中,您可以更輕鬆地解決上述問題。

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