![]() |
|
العمليات الحسابية على التاريخ والوقت - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : العمليات الحسابية على التاريخ والوقت (/showthread.php?tid=5210) الصفحات:
1
2
|
العمليات الحسابية على التاريخ والوقت - MShRaul - 11-05-2013 السلام عليكم ما هي طريقة معرفة عدد الساعات والأيام بين وقتين مثلاً 11:30:00 م 20/5/2013 - 10:15:00 ص 19/5/2013 طبعا تعليمات تجزئة التاريخ والوقت وفصلهم عندي لكن بالنسبة للفرق بينهم النتائج تحتاج عمليات كتي هل من طريقة بسيطة ؟ العمليات الحسابية على التاريخ والوقت - بن دهيبة - 11-05-2013 وعليكم السلام ورحمة الله تعالى وبركاته. كود : procedure TForm1.Button3Click(Sender: TObject);
var
Date1, Date2, DateD : TDateTime;
HH, MM, SS, MS: Word;
begin
Date1 := StrToDateTime('21/02/2010 04:32:50');
Date2 := now;
DateD := Date2 - Date1;
DecodeTime(DateD , HH, MM, SS, MS);
HH := HH + (24 * Round(DateD ));
Showmessage('الفرق بين التاريخين هو : ' + inttostr(HH) + 'ساعة ' + inttostr(MM) +
' دقيقة'+ inttostr(SS) +' ثانية '+ inttostr(MS)+' جزئ من الألف ');
end;العمليات الحسابية على التاريخ والوقت - عبد الهادي - 11-05-2013 جزاك الله خيرا استاذنا بن دهبية هل يمكن ان توضح لي تفضلا منكم هذه النقاط كود : Date1 := StrToDateTime('21/02/2010 04:32:50');
Date2 := now;وهنا كود : HH := HH + (24 * Round(DateD ));وبارك الله فيكم العمليات الحسابية على التاريخ والوقت - بن دهيبة - 11-05-2013 جزاك الله خيرا. تفضل الشرح: كود : begin
Date1 := StrToDateTime('21/02/2010 04:32:50');//تحويل سلسلة حرف الى تاريخ ووقت
Date2 := now;//التاريخ والوقت الحالي
DateD := Date2 - Date1;//الفرق بين التاريخين
HHقيمة الابتدائية فى السطر التالى لـ
DecodeTime(DateD , HH, MM, SS, MS);// تفكيك الوقت الناتج عن الفرق بين التاريخين الى ساعة,دقيقة,ثانية,جزئ من الألف.
HH := HH + (24 * Round(DateD ));//الساعات الناتجة عن الفرق + تحويل الايام الى ساعات بدون أخذ الوقت بعد الفاصلة
Showmessage('الفرق بين التاريخين هو : ' + inttostr(HH) + 'ساعة ' + inttostr(MM) +
' دقيقة'+ inttostr(SS) +' ثانية '+ inttostr(MS)+' جزئ من الألف ');
end;العمليات الحسابية على التاريخ والوقت - MShRaul - 11-05-2013 شكراً والله يجزيك الخير بصراحة كنت استخدم الأمر HourSpan وأقوم بتحويلات كتيرة حتى اصل للصيغة HH:MM:SS شكراً جزيلا والله يجزيك الخير العمليات الحسابية على التاريخ والوقت - عبد الهادي - 12-05-2013 جزاك الله خيرا استاذنا الكريم بن ذهبية ، الحق أني غفلت عن دالة التحويل الى تاريخ ووقت فلم انتبه لها وكان سؤالي السابق فالعذر منكم غير ان شرحكم طيب ومفيد فلك خالص الشكر وأود ان اتعلم دالة HourSpan لعلي احتاجها في البرمجة ان لم يكن هناك مانع من استاذ الكريم العمليات الحسابية على التاريخ والوقت - MShRaul - 12-05-2013 السلام عليكم بعد تجربة الكود الموضوع لاحظت وجود خطأ في النتيجة بالنسبة لليوم الأول في عدد الساعات ولذلك قمت ببعض التعديل البسيط في هذا الجزء كود : حيث حذفت هذا القسم
HH := HH + (24 * Round(DateD ))
وأضفت القسم التالي طبعا هنا يجب إضافة تعريف لـ dd بقيمة Word
dd:=DaysBetween(Date1, Date2);
if dd >= 1 then HH := HH + dd*24;طبعاً في حال كان لدي خطأ ما ****ا التصحيح وشكراا العمليات الحسابية على التاريخ والوقت - MShRaul - 12-05-2013 عبد الهادي كتب :جزاك الله خيرا استاذنا الكريم بن ذهبية ، الحق أني غفلت عن دالة التحويل الى تاريخ ووقت فلم انتبه لها وكان سؤالي السابق فالعذر منكم بالنسبة لهذه التعليمة تعطينا عدد النتيجة بين التاريخين والوقتين بالساعات مثلاً 254.9 وهنا علينا القيام بالتحويل للحصول على عدد الأيام أو عدد الدقائق وذل بالتعامل مع 0.9 للحصول على عدد الدقائق ومع 254 للحصول على عدد الأيام وعدد الساعات 0.9*60= عدد الدقائق 254/24=عدد الأيام والساعات بصراحة هنا أنت بحاجة للتعامل مع الأرقام القسم العشري بشكل منفصل عن القسم الصحيح لو عندك تعليمة تفيدني بفصل القسمين عن بعض أكون لك من الشاكرين توجد التعليمة floattodecimal لكني لم أجد التعامل معها بصراحة أنا عم أتحايل عليها بالتعامل مع الرقم كنص والبحث عن "." وفصل الرقمين العمليات الحسابية على التاريخ والوقت - بن دهيبة - 12-05-2013 السلام عليكم ورحمة الله تعالى وبركاته. جزاكم الله خيرا إقتباس :السلام عليكم بعد تجربة الكود الموضوع لاحظت وجود خطأ في النتيجة بالنسبة لليوم الأول في عدد الساعاتلقد جربته ولم الحظ أي خطأ . ربما عكست التارخين. إقتباس :بصراحة هنا أنت بحاجة للتعامل مع الأرقام القسم العشري بشكل منفصل عن القسم الصحيح لو عندك تعليمة تفيدني بفصل القسمين عن بعض أكون لك من الشاكرين صرح بالوحدة كود : uses Math;استخدم كود : Floor(254.9)لاجاد 254 العدد الصحيح و كود : 254.9-Floor(254.9);العمليات الحسابية على التاريخ والوقت - MShRaul - 12-05-2013 بن دهيبة كتب :لقد جربته ولم الحظ أي خطأ . ربما عكست التارخين.الخطأ تحديداً بالنسبة لليوم الأول عندما يكون الفرق بين التاريخين أقل من 24 ساعة التعليمة السابقة تعطي قيمة 24 ساعة إضافية مثلا الفرق هو 23:50 تعطي 47:50 والسبب أن قيمة hh تتضمن 23 ساعة ووفق التعليمة الموجودة سيتم إضافة 24 ساعة أخرى لأن أمر التقريب هو للأعلى يعني 0.95 وفق أمر التقريب تصبح 1 *24 +hh مما يعطي خطأ بالنسبة لليوم الأول فقط |