Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.16;
Скачать: CL | DM;

Вниз

Подскажите процедуру: как найти количество сек, мин, час, дней   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.031 c
1-50769
maxim2
2002-09-06 09:17
2002.09.16
Как отключить правую кнопку мыши в элементе WebBrowser


1-50798
maxim2
2002-09-03 08:14
2002.09.16
Как текст из RichEdit сохранить в файл?


1-50774
Ученик
2002-09-03 11:51
2002.09.16
Application.Handle


3-50608
Vygantas
2002-08-26 12:04
2002.09.16
Поиск при вводе


3-50611
_reset
2002-08-26 10:10
2002.09.16
Cвязанные таблицы (не могу разобраться)...