Форум: "Основная";
Текущий архив: 2002.09.16;
Скачать: [xml.tar.bz2];
ВнизПодскажите процедуру: как найти количество сек, мин, час, дней Найти похожие ветки
← →
velk (2002-09-04 08:07) [0]Подскажите процедуру: как найти количество сек, мин, час, дней между двумя датами и time типа
датаначала:TDate
датаокончания:TDate
времяначала :TTime
времяокончания :TTime
← →
gek (2002-09-04 08:13) [1]Разница
← →
MBo (2002-09-04 08:14) [2]TDateTime- это число double
Если у тебя дата и время хранятся отдельно, то
придется их сложить
d:=(EndDate+EndTime)-(StartDate+StartTime)
целая часть результата - число дней, а дробная - часть дня.
days:=trunc(d);
f:=frac(d);
hours:=Trunc(F*24);
min:=Trunc((f-hours*24)*1440);
про секунды уже сам догадайся
← →
velk (2002-09-04 08:16) [3]Спасибо большое
← →
velk (2002-09-04 08:31) [4]Что то он не правильно работает
← →
MBo (2002-09-04 08:34) [5]правильно или нет - зависит от конкретного понимания, как именно считать
← →
velk (2002-09-04 08:39) [6]я так понял этот алгоритм выдает разность времени в 3 разных так скаать форматах
в днях часах в минутах?
← →
MBo (2002-09-04 08:42) [7]прочитай в хелпе, как устроен TDateTime, и на основе этого сделай именно то,что тебе нужно
← →
velk (2002-09-04 08:43) [8]min:=Trunc((f-hours*24)*1440);ОШИБКА получается
надо так
min:=Trunc((f-hours*60)*1440);:-)))
← →
Turalyon (2002-09-04 08:48) [9]>MBo ©
А может воспользоваться стандартными функциями?
DaysBetween(TDateTime,TDateTime) - количество дней между 2-я датами
HoursBetween, MinutesBetween, SecondsBetween соответственно.
← →
velk (2002-09-04 08:53) [10]а это разве стандартные функции?
← →
MBo (2002-09-04 08:53) [11]>надо так
Ну вот и хорошо ;)
>Turalyon
Может, и можно, просто задачу определения временного интервала можно ставить совсем по-разному
← →
Turalyon (2002-09-04 08:57) [12]>velk © (04.09.02 08:53)
Модуль DateUtils
>MBo ©
Ээээ... например? Мне чего то в голову не приходит как можно по разному?
← →
MBo (2002-09-04 09:00) [13]>Turalyon
Одному надо получить количество целых дней, другому дней+часов и т.д., третьему дробное количество дней, а как-то спрашивали даже дробное количество месяцев (с 15 февраля невисокосного по 31 марта 1.5 месяца) и т.д.
← →
velk (2002-09-04 09:00) [14]DateUtils из RX?
← →
velk (2002-09-04 09:02) [15]StartDate:=MonthCalendar1.Date;
EndDate:=MonthCalendar2.Date;
StartTime:=DateTimePicker1.Time;
EndTime:=DateTimePicker2.Time;
d:=(EndDate+EndTime)-(StartDate+StartTime);
DecodeTime(d,hours,min,sec,ms);
t:=(Trunc(hours*3600)+Trunc(min*60)+Trunc(d)*86400);
Days:=Trunc(d);
min:=days*1440+hours*60+Min;//Общее кол мин
← →
velk (2002-09-04 09:03) [16]Days кол дней
← →
Anatoly Podgoretsky (2002-09-04 09:25) [17]
Days := Trunc(D);
Hour := Trunc(D*24);
Min := Trunc(D*24*60);
Sec := Trunc(D*24*60*60);
← →
Stranger71 (2002-09-04 09:26) [18]Неужто никто не в курсе?
Это просто!
FormatDateTime("dd/mm/yyyy hh:mm:ss", (EndDate+EndTime)-(StartDate+StartTime) )
← →
MBo (2002-09-04 09:30) [19]>Stranger71
результат потрясающий!!! ;)
для 14.09.2002-4.09.2002 будет
08.01.1900 23:59:58
← →
Anatoly Podgoretsky (2002-09-04 09:42) [20]Более того ему же надо отобразить интервал в четырех разных системах измерения, а не представить датой, то что датой не является.
← →
Turalyon (2002-09-04 09:42) [21]>MBo © (04.09.02 09:00)
Ну все решается теми же функциями - если количество нецелых дней - то HoursBetween / 24, все висакосные приколы, она понимает.
← →
MBo (2002-09-04 09:46) [22]>Turalyon
Многое, но не все. Ну да ладно.
← →
Stranger71 (2002-09-04 09:47) [23]>MBo ©
Да, действительно....
Что-то я не продумал...
TDateTime - это ж действительное число, в котором целая часть - это кол-во дней, а дробная отвечает за время. Разница - это соответственно то что нам нужно декодировать в задаче.
А FormatDateTime конвертит это, отталкиваясь не от Рождества Христова, а от 1900 года. А я это забыл.
← →
Turalyon (2002-09-04 09:59) [24]>MBo © (04.09.02 09:46)
И все же?
← →
MBo (2002-09-04 10:04) [25]>И все же?
Если вопрос о том, чего нельзя - то
>дробное количество месяцев (с 15 февраля невисокосного по 31 марта 1.5 месяца)
← →
Turalyon (2002-09-04 10:10) [26]А что обзначает 1.5 месяца? В разных месяцах разное колличество дней... по этому фраза 1.5 месяца не совсем корректна... ИМХО
← →
MBo (2002-09-04 10:13) [27]>Turalyon фраза 1.5 месяца не совсем корректна
то-то и оно. Но такой уж был вопрос.
В этой постановке до 29 марта будет (0.5+29/31) месяца
← →
Anatoly Podgoretsky (2002-09-04 10:24) [28]Stranger71 (04.09.02 09:47)
Дело не в этом, а в том, что разница датой не является
← →
Turalyon (2002-09-04 10:25) [29]Ах вот оно что... но все равно крвивовато както вопрос поставлен
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.09.16;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.006 c