2013-03-19 141 views
1

我目前建立一個系統有管理員工timein和超時的一部分,我要計算這個爲了得到計算工作時間

***night shift (Must Work 8 Hr)*** 
    startTime- 10.00 PM 
    endTime- 06.00 AM 

所以我想計算實際工作時該日期(timein - 時間到)。我所做的是

TimeSpan duration = DateTime.Parse(endTime).Subtract(DateTime.Parse(startTime)); 

輸出:16:00

我要的是8:00

如2

startTime-晚上10點
endTime-上午05點00分

推銷員:7:00

我該如何做到這一點?

+1

你需要在開始和結束時間以及時間有一個日期,而不僅僅是一個時間。 – 2013-03-19 07:17:05

回答

1

您必須使用datetime以及兩次之間的確切小時數。因爲你會有不同的日期。假設換班開始於2013年3月18日晚上10:00,結束2013年3月19日5:00 AM

+0

Adil對不起,我不明白你說什麼可以請解釋使用代碼段 – pradeep 2013-03-19 06:35:08

+0

你可以顯示startTime和endTime的確切值嗎? – Adil 2013-03-19 06:47:31

0

嘗試使用Timespan like;

DateTime a = new DateTime(2008, 01, 02, 23, 30, 00); 
DateTime b = new DateTime(2008, 01, 03, 06, 30, 00); 

TimeSpan duration = b - a; 

Console.WriteLine(duration); 

輸出將是

07:00:00 

這裏是一個DEMO

一個TimeSpan對象表示作爲的 天,小時,分鐘,秒和秒的分數的正或負號所測量的時間間隔(時間或 經過時間的持續時間)。

+0

@pradeep每次都不能這樣做,只有當endTime小於開始時間(時間跨越午夜) – Axarydax 2013-03-19 06:37:57

+0

@Axarydax我認爲你把這個評論寫到了錯誤的地方:) – 2013-03-19 06:42:12

+0

我覺得他已經在使用Timespan了;我認爲錯誤在於他如何構建原始日期。 – 2013-03-19 07:16:04