تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
كود من أجل حساب الفرق بين تاريخين :::...:::
#1
السلام عليكم ورحمة الله وبركاته

كاتب الموضوع : Alexander Max2

قمت بعمل هذا الكود لمعرفة الفرق بين تاريخين باليوم والشهر والعام .

يعني العام الثاني فرق العام الأول : سيعطي الفرق بينهما :
كذا عام وَ كذا شهر وَ كذا يوم .

في هذا الكود يقوم بحساب الفرق بين تاريخين :
- فرق العام الثاني عن العام الأول ،

- ثم فرق الشهر في التاريخ الأول عن الشهر في التاريخ الثاني (جمعاً وفرقاً بحسب الحالة)
وكل 12 شهراً يعتبرها عاماً ويضيفها لمتغير العام وحذف ما يقابلها من متغير الشهور .

- ثم حساب فرق الأيام بين أيام التاريخ الأول وأيام التاريخ الثاني (جمعاً وفرقاً بحسب الحالة)
ولكنه هنا لا نقوم بحساب كل 30 يوم شهراً (لأن بعض الشهور أيامها قد تكون 28 أو 29 أو 30 أو 31) .
فنترك فرق الأيم كما هو حتى لو كان الفرق 50 يوماً ، فيكتب 50 يوم .

ولكم الأمر فيه إن شئتم عدلتم عليه وجعلتم كل 30 يوم شهراً ، وإضافته لفرق الشهر ، .. إلخ مما يلحقه من تعديل على اليوم والعام ...


[b]والآن أضع بين أيديكم الكود :
[/b]
PHP كود :
Public Sub GetDefDate(Date1Date2ByRef DayDefByRef MonthDefByRef YearDef)
  
Dim ResD As LongResM As LongResY As Long

  Dim D1 
As ByteD2 As Byte
  Dim M1 
As ByteM2 As Byte
  Dim Y1 
As LongY2 As Long

  D1 
Day(Date1): M1 Month(Date1): Y1 Year(Date1)
  
D2 Day(Date2): M2 Month(Date2): Y2 Year(Date2)

  If 
Y1 Y2 Then
      
If M1 M2 Then
         
If D1 D2 Then
              ResD 
0
              ResM 
0
              ResY 
0
         
ElseIf D1 And D2 lastDayInMonth(M2Y2Then
              ResM 
1
         
ElseIf D1 D2 Then
              ResD 
D2 D1 1               
         End If
      ElseIf M1 < M2 Then
          If D1 = 1 And D2 = lastDayInMonth(M2, Y2) Then
              ResD = 0
              ResM = M2 - M1 + 1
          ElseIf D1 = 1 Then
              ResD = D2
              ResM = M2 - M1
          ElseIf D2 = lastDayInMonth(M2, Y2) Then
              ResD = lastDayInMonth(M1, Y1) - D1 + 1
              ResM = M2 - M1
          Else
              ResD = (lastDayInMonth(M1, Y1) - D1 + 1) + D2
              ResM = M2 - M1 - 1
          End If
      End If
  ElseIf Y1 < Y2 Then
      ResY = Y2 - Y1 - 1
      If D1 = 1 And D2 = lastDayInMonth(M2, Y2) Then
           ResD = 0
           ResM = (12 - M1 + 1) + M2
      ElseIf D1 = 1 Then
           ResD = D2
           ResM = (12 - M1 + 1) + M2 - 1
      ElseIf D2 = lastDayInMonth(M2, Y2) Then
           ResD = lastDayInMonth(M1, Y1) - D1 + 1
           ResM = (12 - M1) + M2
      Else
           ResD = (lastDayInMonth(M1, Y1) - D1 + 1) + D2
           ResM = (12 - M1) + M2 - 1
      End If

      If ResM >= 12 Then
         ResY = ResY + ResM \ 12
         ResM = ResM Mod 12
      End If
  End If
'
================================
  
DayDef ResD
  MonthDef 
ResM
  YearDef 
ResY

End Sub 
والكود السابق يمكنكم وضعه في المودل أو في الفورم (بحسب الرغبة والنكهة) .

ومن أجل إستخراج النتيجة نستدعي الكود السابق بالكود التالي :



Private Sub Command1_Click()
Dim D1, M1, Y1 GetDefDate Date1, Date2, D1, M1, Y1
MsgBox D1 & " - " & M1 & " - " & Y1
End Sub


لكن لا تنسونا من الدعاء .....



[b]بالتوفيق للجميع .......[/b]
يا عالما بحالي 
الرد }}}}
تم الشكر بواسطة:
#2
ياأخي احمد أشكرك شكرا جزيلا
الله يدخلك الجنة
ووالديك والمسلمين جميعهم
الرد }}}}
تم الشكر بواسطة:
#3
ياأخي أحمد عندي مشروع وأريدك أن تساعدني لو أمكن من وقتك الغالي ؟
بعد الموافقة سوف أطرح لك المشروع
الله يجعلكم زخرا للإسلام
وشكرا
الرد }}}}
تم الشكر بواسطة:
#4
جمال موسي كتب :ياأخي أحمد عندي مشروع وأريدك أن تساعدني لو أمكن من وقتك الغالي ؟
بعد الموافقة سوف أطرح لك المشروع
الله يجعلكم زخرا للإسلام
وشكرا

أخي ، ما أنا إلا ناقل للموضوع ،، خبرتي بالبرمجة بسيطة جداً لا تتعدى كوني هاوي لها فقط
تحياتي لك
يا عالما بحالي 
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  حساب عمر الشخص اعتماداً على تاريخ الميلاد RaggiTech 0 710 17-10-12, 12:43 AM
آخر رد: RaggiTech

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


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