アカウントに昼休みを取って絶対にオリジナルの、より多くの判定条件、持ち帰りください好きです。。。
/// <要約> /// 時間働いた今日の有効数を計算する /// </要約> パブリック 静的進GetWorkHour(CheckOnModel todayCheckOn) { // 今日働いた時間の有効数を計算する // 通常の状況は、午前9に早く動作します。 00が動作するように後半18時 のDateTime amTime = Convert.ToDateTimeに(DateTime.Now.ToString(" YYYY-MM-DD ")+ " 午前9時01分" ); 日時pmTime = Convert.ToDateTime(DateTime.Now.ToString(に" MM-DD-YYYY ")+ " 午後6時00分" ); NoonBreakStartTime日時 = Convert.ToDateTimeに(DateTime.Now.ToString(" YYYY-MM-DD ")+ " 12:30 " ) のDateTime noonBreakEndTime = Convert.ToDateTime(DateTime.Now.ToStringに(" YYYY-MM-DD ") + " 13時30 " ); CheckOnModel copyCheckOn = CheckOnModel.DeepCopy(todayCheckOn); // 1時間の昼休みの控除 BOOLの subtractOneHourを= trueに; // 午前9時から開始時間のパンチ作業を作業9時05分より前の IF(todayCheckOn.OnDutyTime .VALUE <= amTime) { copyCheckOn.OnDutyTime = amTime.AddMinutes( - 1 ); } // 作業昼食時の昼休みの終わりからカウントを開始 IF(todayCheckOn.OnDutyTime.Value> = noonBreakStartTime && todayCheckOn.OnDutyTime.Value <= noonBreakEndTime) { copyCheckOn.OnDutyTime = noonBreakEndTime; subtractOneHour = falseに ; // なし控除昼休み } // 昼食後に動作するように最初から IF(todayCheckOn.OnDutyTime.Value> = noonBreakEndTime) { subtractOneHour falseに= ; // ない控除昼休みを } // 18:00から開始時間パンチアウト IF(todayCheckOn.OffDutyTime.Value> = pmTime) { copyCheckOn.OffDutyTime = pmTime; } // 昼休みの間の営業時間 IF(copyCheckOn。 OffDutyTime.Value> = noonBreakStartTime && copyCheckOn.OffDutyTime.Value < noonBreakEndTime) { copyCheckOn.OffDutyTime = noonBreakStartTime; subtractOneHour = falseに ; // ない控除昼食 } //早い時間よりランチラッシュアワー IF(copyCheckOn.OffDutyTime.Value < noonBreakStartTime) { subtractOneHour = falseに ; // ない控除昼食 } IF (subtractOneHour) { copyCheckOn.WorkHour = Convert.ToDecimal((copyCheckOn.OffDutyTime.Value - copyCheckOn .OnDutyTime.Value).TotalHours - 1 ); } 他 { copyCheckOn.WorkHour = Convert.ToDecimal((copyCheckOn.OffDutyTime.Value - copyCheckOn.OnDutyTime.Value).TotalHours); } //昼食時間は負であってもよいパンチを残す IF(copyCheckOn.WorkHourが< 0 ) { copyCheckOn.WorkHour = 0 ; } // 控除時間を減算遡及成功したが、通常のパンチとして IF(== copyCheckOn.Status " Y " && copyCheckOn.EditMan =!新しい新規のGUID()) { copyCheckOn.WorkHour = 8。 - copyCheckOn.SubtractHour; } 戻りcopyCheckOn.WorkHour; }
ます。https://www.cnblogs.com/ushou/p/3687106.htmlで再現