示例#1
0
 public Workday(IDate date, IEntryExitTime entryExitTime, IMutableTimeSpan correctionOfWorktime)
 {
     if (date == null) throw new ArgumentNullException(nameof(date));
     if (entryExitTime == null) throw new ArgumentNullException(nameof(entryExitTime));
     if (correctionOfWorktime == null) throw new ArgumentNullException(nameof(correctionOfWorktime));
     _date = date;
     _entryExitTime = entryExitTime;
     _correctionOfWorktime = correctionOfWorktime;
 }
        public IMutableTimeSpan CreateAsAdditionOf(IMutableTimeSpan timeSpan, IMutableTimeSpan andTimeSpan)
        {
            var hourInMinutes = (timeSpan.Hour + andTimeSpan.Hour) * MinutesPerHour;
            var minuteSignedInMinutes = OneIfZeroSignOf(timeSpan.Hour) * timeSpan.Minute +
                                        OneIfZeroSignOf(andTimeSpan.Hour) * andTimeSpan.Minute;
            var totalMinutes = hourInMinutes + minuteSignedInMinutes;

            var hoursFromTotalMinutes = totalMinutes / MinutesPerHour;
            var remainingMinutesFromTotalMinutes = totalMinutes % MinutesPerHour;
            if (hoursFromTotalMinutes != 0)
                remainingMinutesFromTotalMinutes = Math.Abs(remainingMinutesFromTotalMinutes);
            return CreateFrom(hoursFromTotalMinutes, remainingMinutesFromTotalMinutes);
        }
        public IMutableTimeSpan CreateAsSubstractionOf(IMutableTimeSpan timeSpan, IMutableTimeSpan fromTimeSpan)
        {
            var negativeTimeSpan = CreateFrom(-timeSpan.Hour, timeSpan.Hour == 0 ? -timeSpan.Minute : timeSpan.Minute);

            return CreateAsAdditionOf(negativeTimeSpan, fromTimeSpan);
        }
 private void AssertEqualHourMinuteAndTimeSpan(int hour, int minute, IMutableTimeSpan timeSpan)
 {
     Assert.Equal(hour, timeSpan.Hour);
     Assert.Equal(minute, timeSpan.Minute);
 }