PDA

View Full Version : سوال: مشکل با تفاضل زمان



soft-c
یک شنبه 20 اردیبهشت 1394, 17:16 عصر
سلام
من از کد زیر بری به دست آوردن تفاضل دو زمان استفاده می کنم ولی این کد در زمان هایی که مثلا بین 08:00 تا 08:59 است جواب نمی دهد ولی برای 08:00 و باالاتر از 09:00 جواب می دهد .

DBAdvMaskEdit3.Text:=TimeToStr(StrToTime(DBAdvMask Edit2.Text)-StrToTime(DBAdvMaskEdit1.Text));
اگر بین 08:00 تا 08:59 باشد جواب 12:00 خواهد شد و مشکل دارد

Delphi2010
یک شنبه 20 اردیبهشت 1394, 19:33 عصر
روش بالا در پیاده سازی دقیق نمیشه و من خودم هیچ موقع از روش بالا استفاده نمی کنم ، من از از تبدیل هر دقیقه و سپس تفریق آن ها و سپس تبدیق دقیقه به ساعت استفاده میکنم
و بسیار دقیق هست.

soft-c
یک شنبه 20 اردیبهشت 1394, 22:38 عصر
روش بالا در پیاده سازی دقیق نمیشه و من خودم هیچ موقع از روش بالا استفاده نمی کنم ، من از از تبدیل هر دقیقه و سپس تفریق آن ها و سپس تبدیق دقیقه به ساعت استفاده میکنم
و بسیار دقیق هست.
اگر امکان داره می تونید کدش را اینجا قرار بدید ؟
تشکر

Delphi2010
دوشنبه 21 اردیبهشت 1394, 07:35 صبح
تابع زیر را نوشتم و همیشه در صورت نیاز استفاده می کنم
تبدیل ساعت به دقیقه :



function HoursToMinut(Hours:string):integer;
var
kk,Hourslen,CounterI:integer;
HoursTemp , MinTemp:string;


begin
Hourslen:=StrLen(pchar(Hours));
CounterI:=1;
MinTemp:='';
HoursTemp:='0';


while CounterI<=Hourslen do
begin
if Hours[CounterI]=':' then
break;
HoursTemp:=HoursTemp+Hours[CounterI];


CounterI:=CounterI+1;
end;
if HoursTemp='' then
HoursTemp:='0';


if CounterI<Hourslen then
MinTemp:=copy(Hours,CounterI+1,2)
else
MinTemp:='0';
kk:=StrToInt(MinTemp);




if MinTemp='0' then
Result:=StrToInt(HoursTemp)*60


else if kk<60 then
Result:=StrToInt(HoursTemp)*60+StrToInt(MinTemp)
else
Result:=-1;
end;

Delphi2010
دوشنبه 21 اردیبهشت 1394, 07:37 صبح
حالا به جای کدی که قرار دادی
DBAdvMaskEdit3.Text:=TimeToStr(StrToTime(DBAdvMask Edit2.Text)-StrToTime(DBAdvMaskEdit1.Text));
جایگزین هایت را انجام بده و از محاسبه ی دقیقه هات یه تبدیل بنویس که دقیقه را به ساعت تبدیل کنه

soft-c
دوشنبه 21 اردیبهشت 1394, 08:11 صبح
اونوقت تبدیل دقیقه به ساعت چه طوری میشه؟

soft-c
دوشنبه 21 اردیبهشت 1394, 08:23 صبح
دوستان یک تابع پیدا کردم که تعداد دقیقه را بین دو زمان می دهد :

function MinutesBetween(const ANow, AThen: TDateTime): Int64;