Манипуляции С Датами

Antigo

Active member
16.02.2012
40
0
#1
Всем привет!
Вот такой вопросик уменя не очень сложный.
Есть поля типа дата/время: Date1, Date2, Time1, Time2. Даты вида 02.05.12, время вида 10.25. в текстовые поля Hours и Minutes нужно занести разницу между двумя событиями (Date1:Time1) и (Date2:Time2). вопрос в том, как мне подсчитать разницу между событиями и звписать в текстовые поля Hours и Minutes (желат на собако-формулах) Причем результат должен сразу выводиться после ввода данных
 

Вложения

  • 21.7 КБ Просмотры: 152

dimat

Lotus team
31.07.2008
516
0
#2
Класс NotesDateTime, метод TimeDifference
Создать 2 объекта этого класса:
1. из Date1 и Time1
2. из Date2 и Time2
и у одного из них выполнить TimeDifference с параметром - второй объект
результатом будет разница в секундах, из этого уже и считать количество часов и минут

Добавлено:
Причем результат должен сразу выводиться после ввода данных
На событие Onchange повесить?
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#3
@TimeMerge - для склейки даты и времени.
Потом одно вычитаем из другого и делим на 3600. Целая часть результата - часы. Остаток от деления - минуты.
 

Antigo

Active member
16.02.2012
40
0
#5
@TimeMerge - для склейки даты и времени.
Потом одно вычитаем из другого и делим на 3600. Целая часть результата - часы. Остаток от деления - минуты.
Склеил, высчитал, теперь другая загвоздка: я высчитал часы и минуты и занес их в Hours и Minutes, также я вычслил поля Hours1 и Minutes1 для других двух временных событий. Теперь главный вопрос, как мне вычислить поля SumHours и SumMinutes в которые должно быть записано суммарное время Hours-Minutes и Hours1-Minutes1. Часы в общм можно просто сложить SumHours = Hours + Hours1, а вот как быть с минутами? Ведь если минут больше 60, нужно делать прибавку к часам.. Если кто-то понял меня - подскажите плз..
 

TIA

:-)
Lotus team
15.05.2009
790
3
#6
Точнее "если минут больше 59", тогда делать прибавку к часу.

SumMinutes : = @Modulo(Minutes + Minutes1; 60);
SumHours := Hours + Hours1 + @Integer((Minutes + Minutes1)/60);
 
13.03.2009
625
1
#7
Часы в общм можно просто сложить SumHours = Hours + Hours1, а вот как быть с минутами? Ведь если минут больше 60, нужно делать прибавку к часам..
Издеваетесь? Про оператор if когда-нибудь слышали?
Код:
hh = h1 + h2
mm = m1 + m2
if ( mm > 59 ){
hh = hh + 1
mm = mm - 60
}
 

Antigo

Active member
16.02.2012
40
0
#8
всем спасибо! проще придумал. просто все выразил в секундах, сложил, а потом секунды разбил на часы и минуты.
 

TIA

:-)
Lotus team
15.05.2009
790
3
#9
Тоже вариант, но осторожнее с округлениями. Например

Seconds = 119
Seconds1 = 119

тогда

Minutes = 119 \ 60 = 1
Minutes1 = 119 \ 60 = 1

SumMinutes = (119 + 119) \ 60 = 3 <> Minutes + Minutes1

Пользователь позларадствует, что 1+1=3