0

私はHRプロジェクトに参加しており、ShiftforEmployeesを定義する必要があります。Shiftにはパンチカードの読み取り用にSwipeinとswipeOutの2つのフィールドがありました。スワイプインとスワイプアウトの時間を設定し、次のように読み取るために、2つのdatetimepickerをtimeとしてフォーマットし、trueとしてshowupdownを使用します。

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());

    }

私のSQLサーバーデータベースには、これら3つのフィールドのスワイプイン、スワイプアウト、期間がTimeデータ型として含まれており、これらの値をそこに挿入したいと思います。

テストのために私は4つの値を与えます

スワイプインスワイプアウト期間(出力表示)午前8時午後4時8時間>>>>同日日シフト

午後3時午後10時8時間>>同日昼夜シフティ

午後10時午前6時(翌日)-16時間>>>prblm..8はここに来なければなりません

任意のアイデアplsまたは誰かが私に受け取った期間が負であるかどうかを確認するためのアイデアを教えてもらえますか?

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

2 に答える 2

2

減算する前に値を確認できます。

TimeSpan duration;
if (swipeout >= swipein) {
  duration = swipeout - swipein;
} else {
  duration = swipeout + new TimeSpan(1, 0, 0, 0) - swipein;
}
于 2012-09-02T10:01:32.457 に答える
0

問題は、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 が DateTimes であることを前提としていますが、私はそれらがそうだと推測しています...)

于 2012-09-02T10:40:42.083 に答える