2010-10-22 58 views
1

我需要一個考慮到工作時間的TimeSpan。假設如果我們將TimeSpan配置爲每天8小時,兩天應該返回16小時而不是48小時。有人知道這樣的課程嗎?TimeSpan承認C的工作時間#

謝謝。

編輯

我需要相同的功能,但時間跨度與配置的一天時間。加,減,......應該考慮到這一點。我試圖擴展TimeSpan,但它是封閉的。也許我應該去一些擴展方法來實現這個Oded建議(或類似的)。

+0

大多數情況下,您可能沒有特別注意c#的用途,但以防萬一:Excel支持您的要求。 – 2010-10-22 12:36:57

+0

相關:http://stackoverflow.com/questions/3492958/how-can-a-timespan-day-last-only-for-8-hours – 2010-10-22 16:53:53

回答

2

如果你只是想每天要弄清楚爲8個小時,你可以這樣做:

return TimeSpan.TotalHours/3; 

更新:

現在,你提供了一些更詳細,我建議包裝時間跨度與您自己的類型 - 你可以有一個HoursInWorkingDay屬性,它可以讓你配置一個工作日的小時數。

有一個構造函數,需要一個時間跨度,並分配到可用於計算的私人時間跨度:

public class WrappedTimeSpan 
{ 
    private TimeSpan ts; 
    private int hoursInDay = 8; 

    public WrappedTimeSpan(TimeSpan origTS) 
    { 
     ts = origTs; 
    } 

    public WrappedTimeSpan(TimeSpan origTS, int hoursInDay) : this(origTs) 
    { 
     hoursInDay = hoursInDay; 
    } 

    public int HoursInDay { get;} 

    public int WorkingHours { get { return ts.TotalHours/hoursInDay; }} 
} 

這可以擴展以滿足您有任何其他要求。

+0

很短,很容易和很好+1 – 2010-10-22 10:05:16

+0

我一直在尋找更多完整的解決方案... – 2010-10-22 10:09:50

+3

你是否考慮過例如週一16:30和週二9:30(應該產生1小時),週五9h和週一9h(8h),跨文化差異在穆斯林世界(星期五是週日而不是週日),商業差異(並非所有工作都在9小時開始和/或在17小時結束)以及額外的信息比如加班和假期? – Dialecticus 2010-10-22 10:10:19