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

كيفية حساب عدد أيام العمل بين تاريخين

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

السلام عليكم أخواني,,,,,,,,,,,,,,,,

إذا بالإمكان مساعدتي في إيجاد كود او منطق لحساب عدد أيام العمل من تاريخ إلى تاريخ بدون حساب أيام نهاية الأسبوع (الويكيند)

مثال:

عدد أيام العمل من تاريخ 29/05/2010 إلى 02/06/2010 هو 5 أيام لأن التواريخ من السبت إلى الأربعاء.

عدد أيام العمل من تاريخ 26/05/2010 إلى 01/06/2010 هو 6 أيام لأن التواريخ من الأربعاء إلى الأربعاء قتم حساب الأربعاء و لم يحسب الخميس و الجمعه و حتم حسلب الخمس أيام العمل ليصبح المجموع 6 أيام.

أرجو أن أكون واضح في الشرحو انا جاهز لأي إستفسار.

شاكر تعاونكم

#2

بسم الله الرحمن الرحيم

اخى العزيز

الكود ده ممكن يساعدك

Imports System.Globalization.CultureInfo

        Me.lblAbsCount.Text = DateDiff(DateInterval.Day, DateTime.Parse(Me.TextBox1.Text, CreateSpecificCulture("en-CA")), DateTime.Parse(Me.TextBox2.Text, CreateSpecificCulture("en-CA"))) + 1
#3

الرد والكود غير واضح

الرجاء الشرح

وشاكر ردك

#4

بسم الله الرحمن الرحيم

اخى العزيز

شرح الكود

lblAbsCount.Text ده اسم ال label اللى هيتم عليه عرض القيمة اللى بين التاريخين

DateDiff دى دالة لطرح تاريخين من بعض

DateInterval.Day نوع القيمة االى هترجع هنا day يعنى ايام

و ممكن تغيرها الى سنة او شهر او ساعة او على حسب ما تحتاج

Me.TextBox1.Text, CreateSpecificCulture("en-CA"))

دى قيمة التاريخ الاول و هنا انا باخد قيمته او ال format بتاعه زى التاريخ الامريكى ممكن تشلها خالص

Me.TextBox2.Text, CreateSpecificCulture("en-CA"))

دى قينة التريخ الثانى نفس الموضوع طبعا

اتمنى اكون افدتك

#5

السلام عليكم

يمكن الحساب من خلال الكود التالي

   Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        'غير التواريخ حسب الحاجة 
        Dim d1 = Today 'تاريخ البداية
        Dim d2 = Today.AddDays(50) 'تاريخ النهاية
        Response.Write(WorkDays(d1, d2).ToString)
    End Sub

    Private Function WorkDays(ByVal d1 As DateTime, ByVal d2 As DateTime) As Integer
        Dim Alldays As Integer = DateDiff(DateInterval.Day, d1, d2) + 1 'الفرق في عدد الايام
        'قائمة في جميع هذه الايام
        Dim list2 = Enumerable.Range(0, Alldays).Select(Function(i) _
                        New With {Key .Description = DateAdd(DateInterval.Day, i, d1), _
                        Key .Weekday = DatePart(DateInterval.Weekday, DateAdd(DateInterval.Day, i, d1))})
        'نحسب العدد في جملة مستقلة بدلا من الجملة السابقة حتى تكون اوضح
        Dim daysCount = (From x In list2 Where x.Weekday <> DayOfWeek.Friday And x.Weekday <> DayOfWeek.Thursday).Count()
        Return daysCount

    End Function

وهذا الكود باستخدام LINQ لذا يجب عمل

Import System.Linq

طبعا يمكن استخدام الطريقة التقليدية وعمل For loop على جميع هذه الايام وذلك باستخدام الفرق في عدد الايام بين التاريخين ثم فحص التاريخ اذا كان عطلة باستخدام DatePart(DateInterval.Weekday

#6

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

اخي ، جرب هذا الكود

إن شاء الله يفيدك

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim D1 As Date
        Dim D2 As Date
        Dim TS As New TimeSpan()
        D1 = #5/26/2010#
        D2 = #6/1/2010#
        TS = D2 - D1
        Me.TextBox3.Text = TS.TotalDays.ToString
    End Sub

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

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

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

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

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