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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2008, 21:28   #1
Veiron
Форумчанин
 
Аватар для Veiron
 
Регистрация: 01.12.2007
Сообщений: 346
По умолчанию Как вычитать время ?

1. Как вычитать время ?
2. Как узнать данный час, минуту и секунд отдельно ? Другими словами разделить Time на три части и вывести на экран...
Win 10 x64 | VS 2015 | MSSQL 2014
autovestitv.ru
Veiron вне форума Ответить с цитированием
Старый 11.01.2008, 21:32   #2
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

1. как числа. Например:
var time1,time2,time3:Tdatetime;
...
time1:=now;
<операции>
time2:=now;
time3:=time2-time1; //сколько времени выполнялись <операции>

2. Label1.caption:=formatdatetime('hh: mm:ss.zzz',now);
остальное в справке

Последний раз редактировалось zetrix; 11.01.2008 в 21:40.
zetrix вне форума Ответить с цитированием
Старый 12.01.2008, 01:59   #3
Veiron
Форумчанин
 
Аватар для Veiron
 
Регистрация: 01.12.2007
Сообщений: 346
По умолчанию

А как такое реализовать?
Нужно задать время (например в трех Edit для чч:мм:сс) через которое выполниться действие, при этом вывести таймер обратного отчета на Label.
Мучаюсь второй день, уже такая каша в голове...
Win 10 x64 | VS 2015 | MSSQL 2014
autovestitv.ru
Veiron вне форума Ответить с цитированием
Старый 12.01.2008, 10:30   #4
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Код:
var
  Form1: TForm1;
  t:TdateTime;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
t:=encodetime(strtoint(Edit1.text),strtoint(Edit2.text),strtoint(Edit3.text),0);
timer1.Enabled:=not(timer1.Enabled);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
t:=t-0.00001;
label1.Caption:=formatdatetime('hh:nn:ss',t);
end;
У таймера вначале Enable=false !

Для справки: смотрите хелп по EncodeTime; EncodeDate; DecodeTime; DecodeDate; EncodeDateTime; DecodeDateTime...
Их ещё куча. (Для преобразования даты/времени - 21 шт.; Для переобразования даты/времени в другие типы данных - 24 шт) Это сколько я насчитал

Для написавших ниже: 2 минуты на поиск в книге, 2 минуты писанины, 1 минута - копировать/вставить сюда Итого 5 мин.
"У вас ещё осталось время почитать газету и выпить чашечку кофе" © фильм "Такси"

Последний раз редактировалось zetrix; 12.01.2008 в 10:58.
zetrix вне форума Ответить с цитированием
Старый 12.01.2008, 10:33   #5
delphin100
Он лайн
Форумчанин
 
Аватар для delphin100
 
Регистрация: 26.09.2007
Сообщений: 173
Сообщение например так

1)Как реальзовать:
i:=pos(строка с временем,':');
s:=copy(строка с временем,1,i);
delete(строка с временем,1,i+1);
но тут я не уверен как в процедурах и функциях идут переменные
так что по другому можно так:
час:=strtoint(строка с временем[1]+строка с временем[2]);
мин:= -//-[4]+-//-[5]);
сек:= аналогично;
2)обратный отсчет time к которому идем допустим новый год будет time1
тогда time который будет уменьшатся time2;
time2:=time1-time;
всё;
delphin100 вне форума Ответить с цитированием
Старый 12.01.2008, 10:53   #6
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

Вот получите исходники (15 минут работы ), надеюсь разбереш
TIMER.rar
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Старый 12.01.2008, 12:23   #7
Veiron
Форумчанин
 
Аватар для Veiron
 
Регистрация: 01.12.2007
Сообщений: 346
По умолчанию

zetrix Спасибо, а то с просто вычитанием времени получалась что то не то...
Win 10 x64 | VS 2015 | MSSQL 2014
autovestitv.ru
Veiron вне форума Ответить с цитированием
Старый 12.01.2008, 13:27   #8
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Я тоже как-то мучился с вычислением времени, пока не сообразил подключить модуль DateUtils. Там тьма готовых функций для работы с датой/временем, такие как
SecondsBetween()
SecondOfTheWeek()
MinuteOfTheYear()
MinuteOf()
... и много других.
_SERGEYX_ вне форума Ответить с цитированием
Старый 12.01.2008, 23:17   #9
Veiron
Форумчанин
 
Аватар для Veiron
 
Регистрация: 01.12.2007
Сообщений: 346
По умолчанию

Появилась еще одна проблема, тема такая:

hEdit.Text:=FormatDateTime('hh',Tim e); // В hEdit получается текущий час
mEdit.Text:=FormatDateTime('mm',Tim e); // В mEdit получается 12 независимо от текущей минуты, можно это как нибудь исправить ?

При этом минуты напишутся правильно если написать mEdit.Text:=FormatDateTime('hh:mm', Time); в таком случае можно ли как нибудь из строки вырезать первые три символа ? Есть TrimLeft только не разобрался в нем...

Случайно mm заменил на nn : mEdit.Text:=FormatDateTime('nn',Tim e); и все получилось после чего понял что 12 это месяц и то прошедший Delphi жжет Оо
Win 10 x64 | VS 2015 | MSSQL 2014
autovestitv.ru

Последний раз редактировалось Veiron; 13.01.2008 в 00:54.
Veiron вне форума Ответить с цитированием
Старый 13.01.2008, 00:53   #10
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

Код:
uses DateUtils;
.........
mEdit.Text:= inttostr(MinuteOf(time));
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Время |{ot Паскаль, Turbo Pascal, PascalABC.NET 4 14.05.2008 17:32
время Женька Помощь студентам 4 21.04.2008 17:07
Время ben95 Общие вопросы Delphi 3 06.01.2008 16:02
Время.. ZhekON Общие вопросы Delphi 6 18.06.2007 16:59
время программы fluer Общие вопросы Delphi 8 14.03.2007 16:03