![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите процедуру: как найти количество сек, мин, час, дней [D5, D6, Win95/98, WinME, NT4, Win2k, WinXP]
velk © (2002-09-04 08:07:00)Подскажите процедуру: как найти количество сек, мин, час, дней между двумя датами и time типа
датаначала:TDate
датаокончания:TDate
времяначала :TTime
времяокончания :TTime
Turalyon (2002-09-04 10:25:00) [1]Ах вот оно что... но все равно крвивовато както вопрос поставлен
Anatoly Podgoretsky (2002-09-04 10:24:00) [2]Stranger71 (04.09.02 09:47)
Дело не в этом, а в том, что разница датой не является
MBo (2002-09-04 10:13:00) [3]>Turalyon фраза 1.5 месяца не совсем корректна
то-то и оно. Но такой уж был вопрос.
В этой постановке до 29 марта будет (0.5+29/31) месяца
Turalyon (2002-09-04 10:10:00) [4]А что обзначает 1.5 месяца? В разных месяцах разное колличество дней... по этому фраза 1.5 месяца не совсем корректна... ИМХО
MBo (2002-09-04 10:04:00) [5]>И все же?
Если вопрос о том, чего нельзя - то
>дробное количество месяцев (с 15 февраля невисокосного по 31 марта 1.5 месяца)
Turalyon (2002-09-04 09:59:00) [6]>MBo © (04.09.02 09:46)
И все же?
Stranger71 (2002-09-04 09:47:00) [7]>MBo ©
Да, действительно....
Что-то я не продумал...
TDateTime - это ж действительное число, в котором целая часть - это кол-во дней, а дробная отвечает за время. Разница - это соответственно то что нам нужно декодировать в задаче.
А FormatDateTime конвертит это, отталкиваясь не от Рождества Христова, а от 1900 года. А я это забыл.
MBo (2002-09-04 09:46:00) [8]>Turalyon
Многое, но не все. Ну да ладно.
Turalyon (2002-09-04 09:42:00) [9]>MBo © (04.09.02 09:00)
Ну все решается теми же функциями - если количество нецелых дней - то HoursBetween / 24, все висакосные приколы, она понимает.
Anatoly Podgoretsky (2002-09-04 09:42:00) [10]Более того ему же надо отобразить интервал в четырех разных системах измерения, а не представить датой, то что датой не является.
MBo (2002-09-04 09:30:00) [11]>Stranger71
результат потрясающий!!! ;)
для 14.09.2002-4.09.2002 будет
08.01.190023:59:58
Stranger71 (2002-09-04 09:26:00) [12]Неужто никто не в курсе?
Это просто!
FormatDateTime("dd/mm/yyyy hh:mm:ss", (EndDate+EndTime)-(StartDate+StartTime) )
Anatoly Podgoretsky (2002-09-04 09:25:00) [13]
Days := Trunc(D);
Hour := Trunc(D*24);
Min := Trunc(D*24*60);
Sec := Trunc(D*24*60*60);
velk (2002-09-04 09:03:00) [14]Days кол дней
velk (2002-09-04 09:02:00) [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:00:00) [16]DateUtils из RX?
MBo (2002-09-04 09:00:00) [17]>Turalyon
Одному надо получить количество целых дней, другому дней+часов и т.д., третьему дробное количество дней, а как-то спрашивали даже дробное количество месяцев (с 15 февраля невисокосного по 31 марта 1.5 месяца) и т.д.
Turalyon (2002-09-04 08:57:00) [18]>velk © (04.09.02 08:53)
Модуль DateUtils
>MBo ©
Ээээ... например? Мне чего то в голову не приходит как можно по разному?
MBo (2002-09-04 08:53:00) [19]>надо так
Ну вот и хорошо ;)
>Turalyon
Может, и можно, просто задачу определения временного интервала можно ставить совсем по-разному
velk (2002-09-04 08:53:00) [20]а это разве стандартные функции?