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

إريد طريقة لحساب فرق الوقت بين و قتين بنظام 12 ساعة

بدأه dark_man في 16 فبراير 2012 · 2 رد · 2,716 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته

أريد حساب الفرق بين و قتين بإستخدام أداة DTPicker1 و أداة DTPicker2 بنظام 12 ساعة

بتفعيل خاصية Format = 2-dtpTime لأداتين معا

مثلا

الوقت في أو ل أداة 8:00:00 AM صباحاً

و الوقت في ثاني أداة 5:00:00 PM مساءاً

لازم يعطيني الفرق بينهم 9 ساعات تماماً

و في حالة

الوقت في أول أداة 5:00:00 PM مساءاً

و الوقت في ثاني أداة 2:00:00 AM صباحاً

لازم يعطيني الفرق بينهم 9 ساعات تماماً

و في حالة

الوقت في أو ل أداة 8:30:00 AM صباحاً

و الوقت في ثاني أداة 5:00:00 PM مساءاً

لازم يعطيني الفرق بينهم 8.5 ساعات تماماً

عند تجريبي لأكثر من حل تنجح الطريقة في الحالة الأول و الطريقة الثانية لا تنجح , و الثالثة لاتنجح و العكس صحيح

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

تم تعديل هذه المشاركة بواسطة dark_man في 16 فبراير 2012 في 13:39

#2

بإستخدام الدالة DateDiff تستطيع حساب الفرق بين وقتين, لكن في الحالة الثانية في مثالك ستعطي الناتج بالسالب وذلك لان الدالة تعتمد على التاريخ والوقت في الحساب لذلك مثلاً الوقت 5:00:00 PM يوم 17 هو بعد الوقت 2:00:00 AM يوم 17 , لذا يجب علينا ظبط الاداه الاولى على يوم واحد قبل التاريخ في الاداه الثانية لتظهر النتيجة موجبة , إذا في المثال يجب ان يكون التاريخ في الاداه الاولى 16

وهذا ما قمنا به في الكود :

Dim iHours As Integer, iMinutes As Integer, iSeconds As Integer
Dim TmpDate As Date

DTPicker1.Year = DTPicker2.Year
DTPicker1.Month = DTPicker2.Month
DTPicker1.Day = DTPicker2.Day

If DTPicker1.Value > DTPicker2.Value Then
	DTPicker1.Value = DateAdd("d", -1, DTPicker1.Value)
End If

TmpDate = DTPicker1.Value

iHours = DateDiff("h", TmpDate, DTPicker2.Value)
TmpDate = DateAdd("h", iHours, TmpDate)

iMinutes = DateDiff("n", TmpDate, DTPicker2.Value)
TmpDate = DateAdd("n", iMinutes, TmpDate)

iSeconds = DateDiff("s", TmpDate, DTPicker2.Value)

If iSeconds < 0 Then
	iSeconds = iSeconds + 60
	iMinutes = iMinutes - 1
End If

If iMinutes < 0 Then
	iMinutes = iMinutes + 60
	iHours = iHours - 1
End If

MsgBox "Hours=" & iHours & " - Minutes=" & iMinutes & " - Seconds=" & iSeconds, vbInformation, "Time Difference"
1

It does not matter what they know about you, but what you can do, so let your work speak of you

mmghv VB6 Programmer

#3
محمد مصطفي غريب كتب:

بإستخدام الدالة DateDiff تستطيع حساب الفرق بين وقتين, لكن في الحالة الثانية في مثالك ستعطي الناتج بالسالب وذلك لان الدالة تعتمد على التاريخ والوقت في الحساب لذلك مثلاً الوقت 5:00:00 PM يوم 17 هو بعد الوقت 2:00:00 AM يوم 17 , لذا يجب علينا ظبط الاداه الاولى على يوم واحد قبل التاريخ في الاداه الثانية لتظهر النتيجة موجبة , إذا في المثال يجب ان يكون التاريخ في الاداه الاولى 16

وهذا ما قمنا به في الكود :

Dim iHours As Integer, iMinutes As Integer, iSeconds As Integer
Dim TmpDate As Date

DTPicker1.Year = DTPicker2.Year
DTPicker1.Month = DTPicker2.Month
DTPicker1.Day = DTPicker2.Day

If DTPicker1.Value > DTPicker2.Value Then
	DTPicker1.Value = DateAdd("d", -1, DTPicker1.Value)
End If

TmpDate = DTPicker1.Value

iHours = DateDiff("h", TmpDate, DTPicker2.Value)
TmpDate = DateAdd("h", iHours, TmpDate)

iMinutes = DateDiff("n", TmpDate, DTPicker2.Value)
TmpDate = DateAdd("n", iMinutes, TmpDate)

iSeconds = DateDiff("s", TmpDate, DTPicker2.Value)

If iSeconds < 0 Then
	iSeconds = iSeconds + 60
	iMinutes = iMinutes - 1
End If

If iMinutes < 0 Then
	iMinutes = iMinutes + 60
	iHours = iHours - 1
End If

MsgBox "Hours=" & iHours & " - Minutes=" & iMinutes & " - Seconds=" & iSeconds, vbInformation, "Time Difference"

=====================================================================================================================

شكرا لك أخي 'محمد مصطفي غريب' .... جربتها و تعمل الطريقة بشكل ممتاز

شكرا لك و جزاك الله تعالى عني كل خير

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

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

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

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

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