Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.007 c
1-50694
malakai
2002-09-04 13:30
2002.09.16
Работа с ДЛЛ...


3-50609
Sword
2002-08-26 14:16
2002.09.16
Выборка по символу в записи!!


4-51039
Rookie
2002-07-26 13:35
2002.09.16
User32 под микроскопом


14-50971
kalenih
2002-08-22 11:49
2002.09.16
РОСТОВ


3-50633
Друмлин
2002-08-26 22:27
2002.09.16
большие траблы!! :((





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский