السلام عليكم
ما هي طريقة معرفة عدد الساعات والأيام بين وقتين مثلاً
11:30:00 م 20/5/2013 - 10:15:00 ص 19/5/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;
جزاك الله خيرا استاذنا بن دهبية
هل يمكن ان توضح لي تفضلا منكم هذه النقاط
كود :
Date1 := StrToDateTime('21/02/2010 04:32:50');
Date2 := now;
هنا Date2 تعطي تاريخا فقط على حسب علمي ، فكيف يتم الطرح من الوقت؟
وهنا
كود :
HH := HH + (24 * Round(DateD ));
ما القيمة الاولية ل HH حتى يتم الاضافة اليه مع انك لم تعرفه من قبل
وبارك الله فيكم
شكراً والله يجزيك الخير
بصراحة كنت استخدم الأمر HourSpan وأقوم بتحويلات كتيرة حتى اصل للصيغة HH:MM:SS
شكراً جزيلا والله يجزيك الخير
جزاك الله خيرا استاذنا الكريم بن ذهبية ، الحق أني غفلت عن دالة التحويل الى تاريخ ووقت فلم انتبه لها وكان سؤالي السابق فالعذر منكم
غير ان شرحكم طيب ومفيد فلك خالص الشكر
وأود ان اتعلم دالة HourSpan لعلي احتاجها في البرمجة ان لم يكن هناك مانع من استاذ الكريم
السلام عليكم بعد تجربة الكود الموضوع لاحظت وجود خطأ في النتيجة بالنسبة لليوم الأول في عدد الساعات
ولذلك قمت ببعض التعديل البسيط في هذا الجزء
كود :
حيث حذفت هذا القسم
HH := HH + (24 * Round(DateD ))
وأضفت القسم التالي طبعا هنا يجب إضافة تعريف لـ dd بقيمة Word
dd:=DaysBetween(Date1, Date2);
if dd >= 1 then HH := HH + dd*24;
طبعاً في حال كان لدي خطأ ما ****ا التصحيح وشكراا
عبد الهادي كتب :جزاك الله خيرا استاذنا الكريم بن ذهبية ، الحق أني غفلت عن دالة التحويل الى تاريخ ووقت فلم انتبه لها وكان سؤالي السابق فالعذر منكم
غير ان شرحكم طيب ومفيد فلك خالص الشكر
وأود ان اتعلم دالة hourspan لعلي احتاجها في البرمجة ان لم يكن هناك مانع من استاذ الكريم
بالنسبة لهذه التعليمة تعطينا عدد النتيجة بين التاريخين والوقتين بالساعات
مثلاً 254.9 وهنا علينا القيام بالتحويل للحصول على عدد الأيام أو عدد الدقائق وذل بالتعامل مع 0.9 للحصول على عدد الدقائق ومع 254 للحصول على عدد الأيام وعدد الساعات
0.9*60= عدد الدقائق
254/24=عدد الأيام والساعات
بصراحة هنا أنت بحاجة للتعامل مع الأرقام القسم العشري بشكل منفصل عن القسم الصحيح لو عندك تعليمة تفيدني بفصل القسمين عن بعض أكون لك من الشاكرين
توجد التعليمة floattodecimal لكني لم أجد التعامل معها بصراحة أنا عم أتحايل عليها بالتعامل مع الرقم كنص والبحث عن "." وفصل الرقمين
السلام عليكم ورحمة الله تعالى وبركاته.
جزاكم الله خيرا
إقتباس :السلام عليكم بعد تجربة الكود الموضوع لاحظت وجود خطأ في النتيجة بالنسبة لليوم الأول في عدد الساعات
لقد جربته ولم الحظ أي خطأ . ربما عكست التارخين.
إقتباس :بصراحة هنا أنت بحاجة للتعامل مع الأرقام القسم العشري بشكل منفصل عن القسم الصحيح لو عندك تعليمة تفيدني بفصل القسمين عن بعض أكون لك من الشاكرين
صرح بالوحدة
استخدم
لاجاد 254 العدد الصحيح
و
لاجاد 0.9 العدد بعد الفاصلة
بن دهيبة كتب :لقد جربته ولم الحظ أي خطأ . ربما عكست التارخين.
الخطأ تحديداً بالنسبة لليوم الأول
عندما يكون الفرق بين التاريخين أقل من 24 ساعة التعليمة السابقة تعطي قيمة 24 ساعة إضافية مثلا الفرق هو 23:50 تعطي 47:50 والسبب أن قيمة hh تتضمن 23 ساعة ووفق التعليمة الموجودة سيتم إضافة 24 ساعة أخرى لأن أمر التقريب هو للأعلى يعني 0.95 وفق أمر التقريب تصبح 1 *24 +hh مما يعطي خطأ بالنسبة لليوم الأول فقط