الفريق العربي للبرمجةأرشيف المنتديات · 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 ؟؟؟

فسرها ممكن ؟؟

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

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

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

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

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

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