/// <summary> /// Эта функция определяет, являеться ли времена a и b одними и теми же событиями с учетом погрешности измерения prem в наносекундах /// </summary> /// <param name="a">Что сравниваем</param> /// <param name="b">С чем сраваем</param> /// <param name="prem">Погрешность измерения (в наносекундах)</param> /// <returns>True, если |a-b|<=c. False, если нет.</returns> public static bool is_A_EventSimulB(DateNanos a, DateNanos b, int prem) { DateNanos c = new DateNanos(0, 0, 0, 0, 0, 0, (short)prem); c.makeCorrect(); a.makeCorrect(); b.makeCorrect(); short comp = a.compare(b); if (comp == 0) { return(true); } else if (comp == -1) { if ((b - a) <= c) { return(true); } } else if (comp == 1) { if ((a - b) <= c) { return(true); } } return(false); }
/// <summary> /// Этот метод вычитает из данного экземпляра времени время аргумент и приводит результат к правельному виду. /// ВАЖНО!!! ОТРИЦАТЕЛЬНОЕ ВРЕМЯ НЕПРЕДСКАЗУЕМО СЕБЯ ВЕДЕТ. НЕ СОВЕТУЮ ВЫЧИТАТЬ ИЗ МЕНЬШЕГО ВРЕМЕНИ БОЛЬШЕЕ /// </summary> /// <param name="date">На сколько времени нужно уменьшить это время</param> void subtract(DateNanos date) { makeCorrect(); date.makeCorrect(); if (compare(date) >= 0) { this.Days -= date.Days; this.Hours -= date.Hours; this.Minutes -= date.Minutes; this.Seconds -= date.Seconds; this.Millis -= date.Millis; this.Micros -= date.Micros; this.Nanos -= date.Nanos; } else { this.Days = (short)(date.Days - this.Days); this.Hours = (short)(date.Hours - this.Hours); this.Minutes = (short)(date.Minutes - this.Minutes); this.Seconds = (short)(date.Seconds - this.Seconds); this.Millis = (short)(date.Millis - this.Millis); this.Micros = (short)(date.Micros - this.Micros); this.Nanos = (short)(date.Nanos - this.Nanos); } makeCorrect(); }