2012-09-02 56 views
0

我在一個人力資源項目,我需要爲員工定義班次 班次有兩個讀卡器,Swipein和swipeOut的場合。我用兩個的DateTimePicker與格式,時間和showupdown作爲真正的設置刷卡進出時間 ,在我的SQL Server數據庫中,我把所有這三個精密組件swipein,swipeout,持續時間爲時間閱讀這樣兩次差額之間的差額返回負

public void calculateduration() 
    { 
     TimeSpan swipein = dtp_toTime.Value.TimeOfDay; 
     TimeSpan swipeout = dtp_FromTime.Value.TimeOfDay; 
     TimeSpan duration = dtp_toTime.Value.TimeOfDay - dtp_FromTime.Value.TimeOfDay; 
     MessageBox.Show(duration.ToString()); 

    } 

數據類型,我想插入這些值有

爲了測試我給四個值

Swipein Swipeout持續時間(顯示輸出) 上午8時下午4時8小時>>>>其當天SDAY轉變

下午3點10時8個小時>>當天daynight縮骨

10日下午6時許(次日)-16小時>>>了prblm..8一定要來這裏

任何想法請 或任何可以一個告訴我的想法來檢查收到的持續時間是否爲負像

if(duration <0) 
{ 
duration= 24-duration; 
} 

回答

2

您可以減去之前檢查值:

TimeSpan duration; 
if (swipeout >= swipein) { 
    duration = swipeout - swipein; 
} else { 
    duration = swipeout + new TimeSpan(1, 0, 0, 0) - swipein; 
} 
0

這個問題我s TimeSpan結構旨在表示時間間隔,而不是特定的時間。所以在這種情況下,使用TimeSpan持續時間是有道理的,但Swipein和Swipeout會更好地表示DateTime。

public void calculateduration() 
{ 
    DateTime swipein = dtp_toTime.Value; 
    DateTime swipeout = dtp_FromTime.Value; 
    TimeSpan duration = swipeout - swipein; 
    MessageBox.Show(duration.ToString()); 
} 

(當然,這是假定dtp_ToTime.Value和dtp_FromTime.Value是DateTime是否,但我猜他們是...)

+0

但我沒有想的日期部T也去數據庫,這是我定義轉換時間的flace,它不需要一個日期,它只是說轉移A是從這個時間到這個thime evaery day ..我將使用這個時間在機器中每次刷卡...反正是一個好主意由你轉發 –