...

Получить продолжительность периода между двумя датами

Тема в разделе "Примеры сценариев", создана пользователем evgeneva, 7 окт 2021.

  1. evgeneva

    evgeneva Участник

    Для вычисления продолжительности периода между двумя датами необходимо преобразовать их в тип Datetime, далее воспользоваться методом sub(date: TDatetime): TDuration, и применить необходимые свойства типа данных TDuration.
    Код:
    
    const duration Context.data.start_Datetime!.sub(Context.data.end_Datetime!);
    // в секундах
    const durationInSeconds duration.seconds;
    // в часах
    const durationInHours duration.hours;
    // в днях
    const durationInDays Math.floor(duration.hours 24);
    Пример расчета продолжительности командировки в днях:
    Код:
    
    /получим элемент приложения Командировка
    const trip await Context.data.business_trip!.fetch();
    //преобразуем даты начала и конца к типу Datetime
    conststart trip.data.departureDate!.asDatetime(new TTime(0,0,0,0));
    const 
    end trip.data.returnDate!.asDatetime(newTTime(23,59,0,0));
    //расcчитаем длительность в днях
    trip.data.durationTotal Math.floor(end.sub(start).hours/24);
    //сохраним изменения
    await trip.save();
    Также можно воспользоваться методом unix(): number типа данных TDatetime (Дата/время), т.к. метод возвращает количество секунд от 00:00:00 01.01.1970 по UTC до указанной даты/времени.
    Пример вычисления количества часов между двумя временными точками:
    Код:
    
    const number_of_hours = (Context.data.end!.unix() - Context.data.start!.unix())/3600;