الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

طرح تاريخ من تاريخ والناتج بالأيام

مغلق
بدأه mahmola في 3 مايو 2005 · 7 رد · 3,442 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيف يمكن أن أطرح تاريخ من تاريخ وأحصل على النتيجة بالأيام

أي 10/10/2005

05/10/2005 -

_______________

5 أيام

وشكرا للمنتدى

1 2 me and u r alone

1 2 u a i a a

#2

هذا مثال يوضح كيفية استعمال التاريخ كسلسلة محرفية في عملية الطرح.

يجب ان نحول السلسلة المحرفية إلى صنف TDate مما سيسهل كثيرا التعامل معها كقيم عددية.

نستخدم الدالة StrToDate لهذا الغرض.

يجب على السلسلة المحرفية التي تعبر عن التاريخ أن تحوي قيمة فعلية تتوافق مع نموذج المعرف في باراميتر بديلفي وهو ShortDateFormat و كذلك مع DateSeparator.

:lol:

deltadate.rar

سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين

يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.

اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.

الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.

إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.

و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله

أخوكم مراد

27_06_06_05_21_41_1151410901logo_adl_wal_ihsan.jpg

#3

أفضل حل لك هو استخدام دالة DaysBetween

وهي ترجع لك عدد الأيام بين تاريخين...

لمزيد من المعلومات

http://delphi.about.com/library/rtl/blrtlDaysBetween.htm

بالتوفيق.

#4
Almatrodi كتب:
أفضل حل لك هو استخدام دالة DaysBetween

وهي ترجع لك عدد الأيام بين تاريخين...

دالة ممتازة يا أخي Almatrodi , غير أنها تحسب الفرق بين وقتين وليس بين تاريخين, والناتج من هذه الدالة هو عدد الأيام.

فمثلا الفرق ما بين 31 دجنبر 2004 بتوقيت 23h59 و 1 يناير 2005 بتوقيت23h58, هو 0 يوم. هذا لأن الناتج هو بالساعات . 23h59. أي لم يكتمل يوم وتنقصه دقيقة.

الظاهر من سؤال الأخ /الأخت mahmola أن المطلوب هو الفرق بين تاريخين دون اعتبار للتوقيت بالساعات أو الدقائق.

سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين

يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.

اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.

الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.

إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.

و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله

أخوكم مراد

27_06_06_05_21_41_1151410901logo_adl_wal_ihsan.jpg

#5

الطريقة الأسهل هي :

إذا كان لديك التاريخين في متحولين من نمط TdateTime مثلاً d1,d2:TdateTime

يكون الفرق بين التاريخين هو

difference:= trunc(d1)-trunc(d2);
#6

جرب

إذا كان لديك التاريخين في متحولين من نمط TdateTime مثلاً d1,d2:TdateTime

يكون الفرق بين التاريخين هو

CODE

difference:= d1-d2

#7

اخي الكريم

يمكنك أن تستخدم الدالة DaysBetween لحساب الوقت بين تاريخين معينين و لكن إذا تساوى التاريخ فإنه يعيد الناتج بصفر

Var
	RecentDate,OldDate:TdateTime;
Days=DaysBetween(RecentDate,OldDate);
Example
RecentDate:=29/12/2004  23:30;
OldDate     :=29/12/2004  10:00;
Days=0;

RecentDate:=29/12/2004  00:15;
OldDate     :=28/12/2004  23:59;
Days:=1

هذه الدالة لا تهتم بالوقت و إن كنت قد إستخدمته للتوضيح, فهو في الحقيقة يتعامل مع الجزء الخاص بالتاريخ فقط .

ملاحظة أخرى : هذه الدالة لا تعين لك ترتيبا معينا في تمرير التواريخ فعلى سبيل المثال :

Days=DaysBetween(RecentDate,OldDate);
Days=DaysBetween(OldDate,RecentDate);

كلاهما يعيد نفس النتيجة.

أرجو أن يكون شرحي واضحا..

تحياتي للجميع

#8

procedure TForm2.Button1Click(Sender: TObject);

var

DateBegin ,DateEnd: TDate ;

I:integer;

begin

DateBegin:= StrToDate(Edit1.Text);

DateEnd:=StrToDate (Edit2.Text);

ShowMessage(inttostr(DaysBetween(DateBegin,DateEnd)));

end;

// يجب لدخال المثال التالي

the First date{05-10-2006}

the Secand date{10-10-2006}

then Result is = 5 Days

// Sami Abu Eleiwa

// Sami_Eleiwa@hotmail.com

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…