Beispiel #1
0
    /// <summary>
    /// Эта функция определяет, являеться ли времена a и b одними и теми же событиями с учетом погрешности измерения prem в наносекундах
    /// </summary>
    /// <param name="a">Что сравниваем</param>
    /// <param name="b">С чем сраваем</param>
    /// <param name="prem">Погрешность измерения (в наносекундах)</param>
    /// <returns>True, если |a-b|&lt;=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);
    }
Beispiel #2
0
    /// <summary>
    /// Этот метод вычитает из текущего времени заданное количество миллисекунд и приводит данное время к правельному виду.
    /// ВАЖНО!!! ОТРИЦАТЕЛЬНОЕ ВРЕМЯ НЕПРЕДСКАЗУЕМО СЕБЯ ВЕДЕТ. НЕ СОВЕТУЮ ВЫЧИТАТЬ ИЗ МЕНЬШЕГО ВРЕМЕНИ БОЛЬШЕЕ
    /// </summary>
    /// <param name="nanos">Количество миллисекунд, на которое нужно уменьшить это время</param>
    public void subtract(ulong nanos)
    {
        DateNanos b = new DateNanos();

        b.setNanos(nanos);
        subtract(b);
    }
Beispiel #3
0
 /// <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();
 }
Beispiel #4
0
    /// <summary>
    /// Этот метод прибовляет к текущему времени заданное количество миллисекунд и приводит данное время к правельному виду.
    /// </summary>
    /// <param name="nanos">Количество миллисекунд, на которое нужно увеличить это время</param>
    public void add(ulong nanos)
    {
        DateNanos b = new DateNanos();

        b.setNanos(nanos);
        add(b);
    }
Beispiel #5
0
 /// <summary>
 /// Этот метод прибовляет к времени данного экземпляра время-аргумент и приводит результат к правельному виду.
 /// </summary>
 /// <param name="date">Время, на которое нужно увеличить это время</param>
 void add(DateNanos date)
 {
     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;
     makeCorrect();
 }
Beispiel #6
0
 /// <summary>
 /// Возвращает разницу между временем данного экземпляра и аргумента, выраженную в наносекундах.<para>
 /// при слишком большом значении памяти ulong может не хватить!!!</para>
 /// </summary>
 /// <param name="a">То, что сравнивать</param>
 /// <param name="b">То, с чем сравнивать</param>
 /// <returns>Разница, в наносекундах</returns>
 static public ulong difference(DateNanos a, DateNanos b)
 {
     if (a.compare(b) > 0)
     {
         a.subtract(b);
         return(a.getNanos());
     }
     else if (a.compare(b) < 0)
     {
         b.subtract(a);
         return(b.getNanos());
     }
     else
     {
         return(0);
     }
 }
Beispiel #7
0
    /// <summary>
    /// Этот метод сравнивает время данного экземпляра и параметра
    /// </summary>
    /// <param name="date">
    /// Возвращает -1, если параметр больше;
    ///             0, если равны;
    ///             1, если экземпляр больше параметра;</param>
    /// <returns>Результат сравнения</returns>
    short compare(DateNanos date)
    {
        if (Days > date.Days)
        {
            return(1);
        }
        else if (Days < date.Days)
        {
            return(-1);
        }

        if (Hours > date.Hours)
        {
            return(1);
        }
        else if (Hours < date.Hours)
        {
            return(-1);
        }
        if (Minutes > date.Minutes)
        {
            return(1);
        }
        else if (Minutes < date.Minutes)
        {
            return(-1);
        }
        if (Seconds > date.Seconds)
        {
            return(1);
        }
        else if (Seconds < date.Seconds)
        {
            return(-1);
        }
        if (Millis > date.Millis)
        {
            return(1);
        }
        else if (Millis < date.Millis)
        {
            return(-1);
        }
        if (Micros > date.Micros)
        {
            return(1);
        }
        else if (Micros < date.Micros)
        {
            return(-1);
        }
        if (Nanos > date.Nanos)
        {
            return(1);
        }
        else if (Nanos < date.Nanos)
        {
            return(-1);
        }

        return(0);
    }