اینم واسه کسانی که می خوان روزهای مابین دو تا تاریخ شمسی رو محاسبه کنند ، برای یه پروژه نیاز شد که این تابع رو (بهمراه یه تابع کمکی) بنویسم بد ندیدم اینجا بزارمشون تا دیگران هم استفاده کنند البته سالهای کبیسه رو محاسبه نمی کنه و روز پایانی سال از ماه دوازدهم رو کم نمی کنه ![لبخند](images/smilies/yahoo/106.gif)
Function GetDiffDays(ByVal FirstDate As String, ByVal SecondDate As String) As Integer
Dim FirstDay, FirstMonth, FirstYear, SecondDay, SecondMonth, SecondYear As String
' FirstDate = "1391/02/05" : SecondDate = "1391/03/02"
Dim FD, FM, FY, SD, SM, SY, ExpDays As Integer
' Split First Date As FirstDay, FirstMonth and FirstYear As String
FirstDay = Split(FirstDate, "/")(2)
FirstMonth = Split(FirstDate, "/")(1)
FirstYear = Split(FirstDate, "/")(0)
' Integer of Day of First Date
FD = CInt(If(Left(FirstDay, 1) = "0", Right(FirstDay, 1), FirstDay))
' Integer of Month of First Date
FM = CInt(If(Left(FirstMonth, 1) = "0", Right(FirstMonth, 1), FirstMonth))
' Integer of Year of First Date
FY = CInt(FirstYear)
' Split Second Date As SecondDay, SecondMonth and SecondYear As String
SecondDay = Split(SecondDate, "/")(2)
SecondMonth = Split(SecondDate, "/")(1)
SecondYear = Split(SecondDate, "/")(0)
' Integer of Day of Second Date
SD = CInt(If(Left(SecondDay, 1) = "0", Right(SecondDay, 1), SecondDay))
' Integer of Month of Second Date
SM = CInt(If(Left(SecondMonth, 1) = "0", Right(SecondMonth, 1), SecondMonth))
' Integer of Year of Second Date
SY = CInt(SecondYear)
ExpDays = If(SY < FY, 0, (SY - FY) * 365)
ExpDays += If(SM > FM, MonthDays(SM) - MonthDays(FM), 0)
' ExpDays -= If(SM < FM, MonthDays(FM - SM), 0)'
ExpDays += If(SD > FD, SD - FD, 0)
' ExpDays -= If(SD < FD, FD - SD, 0)'
Return ExpDays
End Function
Function MonthDays(ByVal MonthInt As Integer) As Integer
Dim DiffDays As Integer = 0
DiffDays = If(MonthInt <= 7, MonthInt * 30, ((MonthInt - 7) * 31) + 210)
Return DiffDays
End Function
تابع MonthDays اشتباها 6 ماه اول رو 30 روزه حساب می کرد با این جایگزین می شه:
Function MonthDays(ByVal MonthInt As Integer) As Integer
Dim DiffDays As Integer = 0
DiffDays = If(MonthInt <= 7, ((MonthInt - 7) * 31) + 210, MonthInt * 30)
Return DiffDays
End Function