24-10-12, 07:22 PM
(آخر تعديل لهذه المشاركة : 24-10-12, 07:26 PM {2} بواسطة Nŏ Coммεητ.)
السلام عليكم ورحمة الله وبركاته
كاتب الموضوع : Alexander Max2
قمت بعمل هذا الكود لمعرفة الفرق بين تاريخين باليوم والشهر والعام .
يعني العام الثاني فرق العام الأول : سيعطي الفرق بينهما :
كذا عام وَ كذا شهر وَ كذا يوم .
في هذا الكود يقوم بحساب الفرق بين تاريخين :
- فرق العام الثاني عن العام الأول ،
- ثم فرق الشهر في التاريخ الأول عن الشهر في التاريخ الثاني (جمعاً وفرقاً بحسب الحالة)
وكل 12 شهراً يعتبرها عاماً ويضيفها لمتغير العام وحذف ما يقابلها من متغير الشهور .
- ثم حساب فرق الأيام بين أيام التاريخ الأول وأيام التاريخ الثاني (جمعاً وفرقاً بحسب الحالة)
ولكنه هنا لا نقوم بحساب كل 30 يوم شهراً (لأن بعض الشهور أيامها قد تكون 28 أو 29 أو 30 أو 31) .
فنترك فرق الأيم كما هو حتى لو كان الفرق 50 يوماً ، فيكتب 50 يوم .
ولكم الأمر فيه إن شئتم عدلتم عليه وجعلتم كل 30 يوم شهراً ، وإضافته لفرق الشهر ، .. إلخ مما يلحقه من تعديل على اليوم والعام ...
[b]والآن أضع بين أيديكم الكود :
[/b]
والكود السابق يمكنكم وضعه في المودل أو في الفورم (بحسب الرغبة والنكهة) .
ومن أجل إستخراج النتيجة نستدعي الكود السابق بالكود التالي :
Private Sub Command1_Click()
Dim D1, M1, Y1 GetDefDate Date1, Date2, D1, M1, Y1
MsgBox D1 & " - " & M1 & " - " & Y1
End Sub
لكن لا تنسونا من الدعاء .....
[b]بالتوفيق للجميع .......[/b]
كاتب الموضوع : Alexander Max2
قمت بعمل هذا الكود لمعرفة الفرق بين تاريخين باليوم والشهر والعام .
يعني العام الثاني فرق العام الأول : سيعطي الفرق بينهما :
كذا عام وَ كذا شهر وَ كذا يوم .
في هذا الكود يقوم بحساب الفرق بين تاريخين :
- فرق العام الثاني عن العام الأول ،
- ثم فرق الشهر في التاريخ الأول عن الشهر في التاريخ الثاني (جمعاً وفرقاً بحسب الحالة)
وكل 12 شهراً يعتبرها عاماً ويضيفها لمتغير العام وحذف ما يقابلها من متغير الشهور .
- ثم حساب فرق الأيام بين أيام التاريخ الأول وأيام التاريخ الثاني (جمعاً وفرقاً بحسب الحالة)
ولكنه هنا لا نقوم بحساب كل 30 يوم شهراً (لأن بعض الشهور أيامها قد تكون 28 أو 29 أو 30 أو 31) .
فنترك فرق الأيم كما هو حتى لو كان الفرق 50 يوماً ، فيكتب 50 يوم .
ولكم الأمر فيه إن شئتم عدلتم عليه وجعلتم كل 30 يوم شهراً ، وإضافته لفرق الشهر ، .. إلخ مما يلحقه من تعديل على اليوم والعام ...
[b]والآن أضع بين أيديكم الكود :
[/b]
PHP كود :
Public Sub GetDefDate(Date1, Date2, ByRef DayDef, ByRef MonthDef, ByRef YearDef)
Dim ResD As Long, ResM As Long, ResY As Long
Dim D1 As Byte, D2 As Byte
Dim M1 As Byte, M2 As Byte
Dim Y1 As Long, Y2 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 = 1 And D2 = lastDayInMonth(M2, Y2) Then
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]
متغيب