میشه استپ بای استپ برام بگین که توابعی که برای تبدیل تاریخ میلادی به شمسی باید به کارببرم چی هست؟
دوست عزیز و گرامی من خودم در برنامه ام از تابع (کدی) که در زیر ملاحظه می کنی برای تبدیل تاریخ میلادی به شمسی استفاده می کنم فقط کافی هر جا اجتیاج داری از این تابع(کد) استفاده کنی.
در این کد تابع تاریخ روز امروز را تبدیل به تاریخ شمسی می کند و به شما تحویل می دهد.دقت کنید که این تاریخ در متغییر today_date بصورت از جنس عدد پشت سر هم ایجاد می شود که شما می توانید با کمی تغییر در خط آخر خط final_date = Trim(Str(ssyears)) + ssmonths + ssdays برنامه هر جور فورمتی که بخواهی خروجی شمسی داشته باشی.
اگر خواستی می توانی با کمی تغییر این تابع را به فانکشن تبدیل کنی تا هر روز دلخواه که شما به کد می دهی همان را به تاریخ شمسی تبدیل کند.
نکته:اگه کمی دقت کنید متوجه می شوید که تابع(کد) بعد از بررسی اینکه در چه ما میلادی شما هستید و چه روز میلادی هستید با طابق تقویم هر سال اختلاف روز ها را پیدا می کند و به روز/ماه/سال شمسی می رسد.ضمنا برایش مهم که شما در کدام نیمه از سال هستید و این موضوع را هم مورد توجه قرار می دهد.
امیدوارم از این کد در برنامه ات استفاده کنی و خوشحال باشی
()Private Sub mm_to_ss
'======================================
mmyears = DatePart("yyyy", Date)
mmdays = DatePart("d", Date)
mmmonths = DatePart("m", Date)
'======================================
'======================================
Select Case mmmonths
Case 1
'==================================
If mmdays >= 1 Or mmdays <= 20 Then
ssdays = mmdays + 10
ssmonths = 10
End If
If mmdays >= 21 Then
ssdays = mmdays - 20
ssmonths = 11
End If
ssyears = mmyears - 622
'==================================
Case 2
'==================================
If mmdays >= 1 Or mmdays <= 19 Then
ssdays = mmdays + 11
ssmonths = 11
End If
If mmdays >= 20 Then
ssdays = mmdays - 19
ssmonths = 12
End If
ssyears = mmyears - 622
'==================================
Case 3
'==================================
If mmdays >= 1 Or mmdays <= 20 Then
'+++ ssdays = mmdays + 10
ssdays = mmdays + 9
ssmonths = 12
ssyears = mmyears - 622
End If
If mmdays >= 21 Then
ssdays = mmdays - 20
ssmonths = 1
ssyears = mmyears - 621
End If
'==================================
Case 4
'==================================
If mmdays >= 1 Or mmdays <= 20 Then
ssdays = mmdays + 11
ssmonths = 1
End If
If mmdays >= 21 Then
ssdays = mmdays - 20
ssmonths = 2
End If
ssyears = mmyears - 621
'==================================
Case 5
'==================================
If mmdays >= 1 Or mmdays <= 21 Then
ssdays = mmdays + 10
ssmonths = 2
End If
If mmdays >= 22 Then
ssdays = mmdays - 21
ssmonths = 3
End If
ssyears = mmyears - 621
'==================================
Case 6
'==================================
If mmdays >= 1 Or mmdays <= 21 Then
ssdays = mmdays + 10
ssmonths = 3
End If
If mmdays >= 22 Then
ssdays = mmdays - 21
ssmonths = 4
End If
ssyears = mmyears - 621
'==================================
Case 7
'==================================
If mmdays >= 1 Or mmdays <= 22 Then
ssdays = mmdays + 9
ssmonths = 4
End If
If mmdays >= 23 Then
ssdays = mmdays - 22
ssmonths = 5
End If
ssyears = mmyears - 621
'==================================
Case 8
'==================================
If mmdays >= 1 Or mmdays <= 22 Then
ssdays = mmdays + 9
ssmonths = 5
End If
If mmdays >= 23 Then
ssdays = mmdays - 22
ssmonths = 6
End If
ssyears = mmyears - 621
'==================================
Case 9
'==================================
If mmdays >= 1 Or mmdays <= 22 Then
ssdays = mmdays + 9
ssmonths = 6
End If
If mmdays >= 23 Then
ssdays = mmdays - 22
ssmonths = 7
End If
ssyears = mmyears - 621
'==================================
Case 10
'==================================
If mmdays >= 1 Or mmdays <= 22 Then
ssdays = mmdays + 8
ssmonths = 7
End If
If mmdays >= 23 Then
ssdays = mmdays - 22
ssmonths = 8
End If
ssyears = mmyears - 621
'==================================
Case 11
'==================================
If mmdays >= 1 Or mmdays <= 21 Then
ssdays = mmdays + 9
ssmonths = 8
End If
If mmdays >= 22 Then
ssdays = mmdays - 21
ssmonths = 9
End If
ssyears = mmyears - 621
'==================================
Case 12
'==================================
If mmdays >= 1 Or mmdays <= 21 Then
ssdays = mmdays + 9
ssmonths = 9
End If
If mmdays >= 22 Then
ssdays = mmdays - 21
ssmonths = 10
End If
ssyears = mmyears - 621
'==================================
End Select
If Len(Trim(Str(ssmonths))) = 1 Then
ssmonths = "0" + Trim(Str(ssmonths))
Else
ssmonths = Trim(Str(ssmonths))
End If
If Len(Trim(Str(ssdays))) = 1 Then
ssdays = "0" + Trim(Str(ssdays))
Else
ssdays = Trim(Str(ssdays))
End If
final_date = Trim(Str(ssyears)) + ssmonths + ssdays
today_date = Val(final_date)
End Sub