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

مساعدة في برنامج حساب الوقت

بدأه م.محمدالحسيني في 6 ديسمبر 2010 · 2 رد · 1,124 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

انا بعمل برنامج يحسب الفرق بين وقتين مختلفين واستخدمت في ذلك VB6

ودالة Visual Basic timeDiff function

المشكلة انني اريد تحديد الفترة التي اريد ان يحسبها البرنامج

مثال :

اريد ان يحسب في الحيز الزمني في ساعات العمل فقط

من الساعة حتي الساعة

9 ص 5 م

ولا يحسب باقي الوقت من اليوم

للتوضيح

اريد ان احسب عدد الساعات بين التاريخين التاليين

(11/10/2010 11:05م حتي 22/10/2010 9:20 ص)

البرنامج يخرج الناتج كالتالي

11 Days

250 Hours

15015 Minutes

-------------------------

وهذه الحسبة خاطئة لانه حسب كل الوقت بين التاريخين لكني اريده ان يحسبها

بحيث يجمع الاوقات في هذه الايام من 9ص حتي 5 م فقط ويسقط باقي اليوم من

الكود كالتالي



Private Sub Command2_Click()
If Val(Text1.Text) = 0 Then MsgBox "type any Date and Time value": Exit Sub
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Text8.Text = ""
Text6.Text = DateDiff("D", Text1.Text, Text3.Text)
Text5.Text = DateDiff("h", Text1.Text, Text3.Text)
Text7.Text = DateDiff("n", Text1.Text, Text3.Text)
Text8.Text = DateDiff("n", Text1.Text, Text3.Text)
End Sub

ارجوا المساعدة

تم تعديل هذه المشاركة بواسطة م.محمدالحسيني في 6 ديسمبر 2010 في 18:24

#2

شكل البرنامج كالتالي

calc.JPG?psid=1

حاولت الحل بهذه الطريقة

طبقا للمعطيات في المثال الحل في تقسيم المسالة الى 3 اجزاء:

1-حساب اول يوم

2-حساب باقي الايام ما عدا اخر يوم

3- حساب اخر يوم

و الحل ككود:
DateTime dStart = new DateTime(2010, 10, 10, 23, 00, 00),
dEnd = new DateTime(2010, 10, 12, 00, 00, 00);
int iMinutesTotal=0;
if (Math.Ceiling((dEnd-dStart).TotalDays)>=1)
{
int iMinutesofFirstDay = 0, iMinutesofIntermediateDays = 0, iMinutesofLastDay = 0;
if (dStart.Hour<=17)
{
iMinutesofFirstDay = ((17 - (Math.Max(dStart.Hour, 9)))*60)-dStart.Minute;
}
iMinutesofIntermediateDays = ((17 - 9) * Math.Max(0, (int)(Math.Ceiling((dEnd - dStart).TotalDays) - 1))) * 60;
if (dEnd.Hour >= 9 )
{
iMinutesofLastDay = ((Math.Min( 17,dEnd.Hour) - 9)*60)+dEnd.Minute;
}
iMinutesTotal = iMinutesofFirstDay + iMinutesofIntermediateDays + iMinutesofLastDay;
}
else
{
iMinutesTotal = ((Math.Min(dEnd.Hour, 17) - Math.Max(dStart.Hour, 9)) * 60) + (dEnd.Minute - dStart.Minute);
#3

اخي هل تعلم اني شكيت بنفسي عندما دخلت للموضوع ..

هل انا في حلم ام في الفريق العربي ؟؟

هل تعلم ان في موضوعك 3 لغات برمجة ؟؟

ولم افهم ماذا تريد ؟؟

اولا كتبت في VB6 والكود فيه .. وفي الرد الثاني الكود #C .. وانت تكتب بقسم VB.net ؟؟؟

فسرها ممكن ؟؟

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

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