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