تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الإجازة السنوية
#6
PHP كود :
Private Function GenerateNationalDateStrings(days As String(), months As String()) As String()
 
       Dim dates As List(Of String) = New List(Of String)()
 
       Dim total As Integer days.Length 1
        For i 
As Integer 0 To total
            Dim d 
As String days(i)
 
           Dim m As String months(i)
 
           Dim y As String DateTime.Now.Year.ToString()
 
           Dim dt As String String.Concat(New String() {d.ToString(Globalization.CultureInfo.CurrentCulture), "/"m.ToString(Globalization.CultureInfo.CurrentCulture), "/"y.ToString(Globalization.CultureInfo.CurrentCulture)})
 
           dates.Add(dt)
 
       Next
        Return dates
.ToArray
    End 
Function

 
   Private Function GenerateNationalDateStrings() As String()
 
       Return GenerateNationalDateStrings({"22""26""14""30"}, {"05""09""10""11"})
 
   End Function

 
   Private Function GenerateAnnualDateStrings(startdate As DateTimeendDate As DateTime) As String()
 
       Dim dates As New List(Of String)()
 
       While startdate <= endDate
            Dim s 
As String CType(Convert.ChangeType(startdate.ToShortDateStringGetType(String)), String)
 
           dates.Add(s)
 
           startdate startdate.AddDays(1)
 
       End While
 
       Return dates.ToArray
    End 
Function

 
   Private Function GetAnnualLevaeDays(annualDates As String(), nationalDates As String()) As Integer
        Return 
(annualDates.Intersect(nationalDates).Count) + (annualDates.Count)
 
   End Function 

في الكود أعلاه :

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

الدالة الثالثة الهدف منها هو حساب مصفوفة تمثل الايام الموجودة بين تاريخ بداية الاجازة و تاريخ نهاية الأجازة

الدالة الاخيرة و هي  GetAnnualLevaeDays هي ما يهمك فعليا لانها التي يتم فيها حساب اجمالي ايام الاجازة وذلك ان كان هناك يوم من الاعياد الوطنية يقع بين تاريخ بداية الاجازة و تاريخ نهاية الاجازة

الكود التالي يوضح كيف تستخدم الكود أعلاه لحساب عدد ايام الاجازة الكلي شاملا الاعياد الوطنية ان وُجدت


PHP كود :
       Dim startDate As DateTime = New DateTime(2016101)
 
       Dim endDate As DateTime = New DateTime(20161031


PHP كود :
Dim i As Integer GetAnnualLevaeDays(GenerateAnnualDateStrings(startDateendDate), GenerateNationalDateStrings()) 

ملحوظة:

جميع الدوال من الممكن كتابتها بطرق  كثيرة .... فهنا في الكود اعلاه كل المصفوفات المستخدمة هي من النوع String لكن من السهل تحويل كل شئ الي مصفوفات من النوع  DateTime لكن هذا لن يؤثر في اي شئ لأن دور المصفوفات هنا يقتصر علي حساب ما هو موجود بالمصفوفات
الرد }}}
تم الشكر بواسطة: ahmed_king2023


الردود في هذا الموضوع
الإجازة السنوية - بواسطة abdulla2 - 17-09-16, 06:01 PM
RE: الإجازة السنوية - بواسطة silverlight - 17-09-16, 07:07 PM
RE: الإجازة السنوية - بواسطة ابو ليلى - 20-09-16, 04:19 AM
RE: الإجازة السنوية - بواسطة silverlight - 21-09-16, 03:35 PM
RE: الإجازة السنوية - بواسطة abdulla2 - 21-09-16, 11:59 PM
RE: الإجازة السنوية - بواسطة silverlight - 22-09-16, 12:34 AM
RE: الإجازة السنوية - بواسطة abdulla2 - 24-09-16, 10:22 AM
RE: الإجازة السنوية - بواسطة silverlight - 24-09-16, 07:25 PM
RE: الإجازة السنوية - بواسطة abdulla2 - 25-09-16, 06:51 PM
RE: الإجازة السنوية - بواسطة silverlight - 26-09-16, 12:52 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] كود نقل السجلات السنوية سمير الجبالي 3 2,423 12-05-18, 12:56 AM
آخر رد: عبدالله الدوسري

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم