Re[2]: ошибки округления в TDateTime?
От: svg2003  
Дата: 26.08.08 02:58
Оценка:
Здравствуйте, Rius, Вы писали:

R>попробуйте получить число дней встроенными свойствами класса TDateTime


К сожалению, встроенных свойств для этого нету. В хелпе так и написано, The integral part of a TDateTime value is the number of days that have passed since 12/30/1899. Сейчас получается дикий изврат, когда я отбрасываю ошибки округления, а только потом получаю верное количество дней:


    // убрать погрешности вычисления времени
    TDateTime RemoveFloatRemsFromTime(const TDateTime &Time)
    {
        unsigned short d, m, y, h, n, s, ms;
        Time.DecodeTime( &h, &n, &s, &ms );
        Time.DecodeDate( &y, &m, &d );

        TDateTime r( y, m, d );
        ReplaceTime( r, TDateTime( h, n, s, ms ) );
        return r;
    }

    // получить количество дней в дате
    // нельзя использовать просто int из за возможных погрешностей вычислений
    int DaysCountFromDateTime(const TDateTime &Date)
    {
        int    r = RemoveFloatRemsFromTime( Date );
        return r;
    }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.