Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2010, 00:17   #1
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию Вычисление разницы дат

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

Как узнать разницу в часах между текущим системным временем и исходными данными?
Dux вне форума Ответить с цитированием
Старый 14.09.2010, 01:49   #2
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Код:
uses DateUtils;

...................
var
  t: TTime;
  dt: TDateTime;
begin
  t := StrToTime(Edit1.Text);
  dt := DateTimePicker1.Date + t;

  ShowMessage(FloatToStr(HoursBetween(Today,dt)));
end;
Баламут вне форума Ответить с цитированием
Старый 14.09.2010, 11:13   #3
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Набери в поисковике "Типы, функции и процедуры Delphi для работы с датой и временем"
и там есть необходимые функции, которые находят разницу между временем и датой
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 14.09.2010, 12:29   #4
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Вообще, дата+время есть дробное число, где целая его часть - дата, дробная - время.
Найди разницу и переведи в формат DateTime.
_SERGEYX_ вне форума Ответить с цитированием
Старый 14.09.2010, 14:42   #5
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от Баламут Посмотреть сообщение
Код:
uses DateUtils;

...................
var
  t: TTime;
  dt: TDateTime;
begin
  t := StrToTime(Edit1.Text);
  dt := DateTimePicker1.Date + t;

  ShowMessage(FloatToStr(HoursBetween(Today,dt)));
end;
Спасибо, Баламут. Вроде работает, но немного странно. Если поставить дату в DateTimePicker равную 14.09.2010 а время в Edit1.text равное 00:20:00, то разница с текущим временем составляет 0 часов, хотя прошло уже 13 часов 22 мин. В чем может быть ошибка?
Dux вне форума Ответить с цитированием
Старый 14.09.2010, 15:16   #6
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

попробуй заменить
Код:
ShowMessage(FloatToStr(HoursBetween(Today,dt)));
на
Код:
ShowMessage(FloatToStr(HoursBetween(Now,dt)));
Не забываем говорить спасибо за помощь - это ведь так приятно
Sanprof вне форума Ответить с цитированием
Старый 14.09.2010, 15:31   #7
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Вместо Today написши Now
Вместо HoursBetween() напиши SecondsBetween()
Код:
ShowMessage(FloatToStr(SecondsBetween(Now,dt)));
Получишь разницу в секундах. Ну, и ,надеюсь, сам сможешь
разделить ее на 60 минут и 24 часа, чтобы разница выглядела примерно так
"2 суток 2 часа 35 минут 10 секунд"
_SERGEYX_ вне форума Ответить с цитированием
Старый 14.09.2010, 15:32   #8
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Sanprof, спасибо за подсказку, все заработало!
Dux вне форума Ответить с цитированием
Старый 14.09.2010, 15:33   #9
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от _SERGEYX_ Посмотреть сообщение
Вместо Today написши Now
Вместо HoursBetween() напиши SecondsBetween()
Код:
ShowMessage(FloatToStr(SecondsBetween(Now,dt)));
Получишь разницу в секундах. Ну, и ,надеюсь, сам сможешь
разделить ее на 60 минут и 24 часа, чтобы разница выглядела примерно так
"2 суток 2 часа 35 минут 10 секунд"
Теперь все стало на свои места, _SERGEYX_, спасибо за помощь!
Dux вне форума Ответить с цитированием
Старый 14.09.2010, 15:36   #10
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

от себя добавлю, вот так
Код:
var
  t: TTime;
  dt: TDateTime;
begin
  t := StrToTime(Edit1.Text);
  dt := StrToDateTime(DateToStr(DateTimePicker1.Date) + ' ' + TimeToStr(t));
  ShowMessage(IntToStr(HoursBetween(Now,dt)));
end;
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение двух таблиц, с целью поиска разницы. 159258357 Microsoft Office Excel 1 29.03.2010 21:34
Триггер на подсчет разницы DaMadQuest SQL, базы данных 2 27.03.2010 13:26
Сравнение массивов до заданной разницы (Delphi7) giga_person Помощь студентам 1 17.02.2010 22:55
не мог понять разницы)) pavelstraut Общие вопросы C/C++ 36 27.07.2009 14:11
Находжение разницы годов в SQL запросе Yurk@ БД в Delphi 13 01.03.2008 09:32