PDA

View Full Version : پیدا کردن فاصله زمانی دو تاریخ



babak869
پنج شنبه 13 مرداد 1384, 23:25 عصر
با سلام
من میخواستم که فاصله زمانی بین دو تاریخ رو بر حسب روز و بر حسب ماه پیدا کنم.چند بار هم با توابع DatetoStr کار کردم اما موفق نشدم.اگه ممکنه منو راهنمایی کنید
ممنونم بابک

vcldeveloper
جمعه 14 مرداد 1384, 02:18 صبح
می تونید از توابع موجود در یونیت DateUtils استفاده کنید:
DaysBetween تعداد روزهای بین دو تاریخ رو برمی گردونه و MonthsBetween هم تعداد ماههای بین دو تاریخ رو.

babak869
شنبه 15 مرداد 1384, 00:56 صبح
با سلام
ممنونم اما اگه ممکنه بیشتر توضیح بدید. یونیت DateUtils رو کجا میتونم پیدا کنم و چطور میتونم فاصله بین دو تاریخ رو از یک رکورد بانک اطلاعاتی استخراج کنم.یعنی مثلا با نوشتن نام شخص فاصله زمانی یعنی تعداد روزها (مثلا تعداد وزهای کتاب امانت برده شده) رو پیدا کنم
متشکرم
موفق باشید
بابک

vcldeveloper
شنبه 15 مرداد 1384, 02:19 صبح
یونیت DateUtils رو کجا میتونم پیدا کنم
این یونیت یکی از یونیت های دلفی هست، فقط باید در قسمت uses یونیت برنامه خودتون اسمش رو اضافه کنید.
درباره توابعی هم که در بالا بهشون اشاره کردم، می تونید به راهنمای دلفی مراجعه کنید.

چطور میتونم فاصله بین دو تاریخ رو از یک رکورد بانک اطلاعاتی استخراج کنم.یعنی مثلا با نوشتن نام شخص فاصله زمانی یعنی تعداد روزها (مثلا تعداد وزهای کتاب امانت برده شده) رو پیدا کنم
من که نمیدونم شما بانکتون رو چطور طراحی کردید، اما احتمالا در بانک شما فیلدی هست که تاریخ دریافت کتاب در داخلش ذخیره میشه، برای بدست آوردن تعداد روزهایی که فرد کتاب رو به امانت برده (به شرطی که تاریخ شما از نوع TDate باشه) می تونید خیلی ساده از تابع DaysBetween استفاده کنید.
مثال:


var
BDate,
DaysPassed : TDate;
begin
BDate := AdoTable1.FieldByName('Your_Field').AsDateTime;
DaysPassed := DaysBetween(Now,BDate);
end;

babak869
شنبه 15 مرداد 1384, 08:51 صبح
سلام دوست عزیز
ممنون از جوابتون.مشکل اصلی من این بود که DateUtils vرو در قسمت یوزز نمی نوشتم.فقط اگه میشه بهم بگو که چطور می تونم دیتابیس رو بین دو تاریخ مشخص فیلتر کنم مثلا دو تاریخ که در Editbox1 وEditbox2 نوشته میشه و بر اساس اون جدول فیلتر بشه.بازم متشکرم
موفق باشید

Touska
شنبه 15 مرداد 1384, 11:34 صبح
یا خیلی مبتدی تر :


function TMain1.DiffDate(FDate, SDate: TDate): Word;
begin
Result := Trunc(SDate) - Trunc(FDate);
end;

babak869
شنبه 15 مرداد 1384, 13:47 عصر
ببخشید جناب توسکای عزیز
این نوشته شما در جواب سوال من بود؟ چون ازش سر در نیاوردم
اگه ممکنه کمی توضیح بدید
متشکرم

babak869
دوشنبه 17 مرداد 1384, 09:45 صبح
ببخشید کسی نیست ما رو بیشتر کمک کنه؟
من میخوام دیتابیس رو بین دو تاریخ دلخواه فیلتر کنم اگه دوستان راهنمایی کنند ممنون میشم
موفق باشید

Touska
دوشنبه 17 مرداد 1384, 11:02 صبح
آقا این که خیلی واضح است.

فاصله بین دو تا تاریخ رو به شما میده.

:)

Touska
دوشنبه 17 مرداد 1384, 11:04 صبح
بگو پس چی می خواهی.

می خواهی فیلتر کنی.

اگر بانکت Sql است از AdoQurey استفاده کن.

اگر چیز دیگری است از دستور Filter استفاده کن.

که هردو آنها تو سایت قبلا توضیح داده شده اند.