Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.09.2010, 00:15
Аватар для Dux
Dux Dux вне форума
Активный
 
Регистрация: 18.03.2008
Сообщения: 206
Репутация: 16
По умолчанию Вычисление разницы дат

Есть дата записанная в DateTimePicker1 равная 10.09.2010
Есть время, указанное в поле Edit1.text:='23:55:00'

Как узнать разницу в часах между текущим системным временем и исходными данными?
Ответить с цитированием
  #2  
Старый 14.09.2010, 02:06
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Код:
var
  H, M, S : Word;
  RecDate : TDateTime;
  Diff :  TDateTime;
begin
  H := StrToInt(Copy(Edit1.Text,1,2));
  M := StrToInt(Copy(Edit1.text,4,2));
  S := StrToInt(Copy(Edit1.Text,7,2));
  RecDate := DateTimePicker1.Date + EncodeTime(H,M,S); // Здесь у EncodeTime можнет быть доп-параметр. Выставить в 0.

  Diff := Now - RecDate; // чистая разница. Также см функции в модуле DateUtils
end;
Ответить с цитированием
  #3  
Старый 14.09.2010, 02:14
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

А на кой разделять Дату и Время, что-бы потом думать как собрать? Не ищем легких путей? Тогда наверное так:
Код:
Var
 DeltaTime: TDateTime;
begin
 DeltaTime := Now - StrToDateTime(DateToStr(DateTimePicker1.Date) +' '+ Edit1.Text);
end;

lmikle: Страдалецъ, накажу ведь!!! Уж тебе положено знать правила на форуме!!!

PS: Свойства DateTimePicker1.Format := 'dd.mm.yyyy hh:mm:ss', DateTimePicker1.Kind := dtkTime, DateTimePicker1.DateTime возможно несколько облегчат жизнь.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #4  
Старый 14.09.2010, 14:23
Аватар для Dux
Dux Dux вне форума
Активный
 
Регистрация: 18.03.2008
Сообщения: 206
Репутация: 16
По умолчанию

Спасибо, Страдалець, заработало. Показывает разницу в часах, минутах, секундах - но не более 1 суток. А как сделать, чтобы отображалось количество дней?

Необходимо получить что-то типа разница: 8 дней, 20 часов, 15 мин.
Возможно ли так отобразить?
Ответить с цитированием
  #5  
Старый 14.09.2010, 14:28
Аватар для Dux
Dux Dux вне форума
Активный
 
Регистрация: 18.03.2008
Сообщения: 206
Репутация: 16
По умолчанию

Цитата:
Сообщение от lmikle
Код:
var
  H, M, S : Word;
  RecDate : TDateTime;
  Diff :  TDateTime;
begin
  H := StrToInt(Copy(Edit1.Text,1,2));
  M := StrToInt(Copy(Edit1.text,4,2));
  S := StrToInt(Copy(Edit1.Text,7,2));
  RecDate := DateTimePicker1.Date + EncodeTime(H,M,S); // Здесь у EncodeTime можнет быть доп-параметр. Выставить в 0.

  Diff := Now - RecDate; // чистая разница. Также см функции в модуле DateUtils
end;

Попробовал Ваш вариант, также не считает количество дней между датами, только часы в пределах одних суток. Может можно как-то подправить?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:02.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025