تبدیل تاریخ به شمسی

با این تابع بدون استفاده از هیچ کتابخانه ای میتونید تاریخ میلادی رو به شمسی تبدیل کنید و در تمامی محصولات b4x استفاده کنید

Sub gregorian_to_jalali(dt As String) As String
Dim g_y,g_m,g_d As String
Dim gy,gm,gd,g_day_no As Int
Dim k() As String
k = Regex.Split(“/”,dt)
g_y = k(0)
g_m = k(1)
g_d = k(2)
Dim g_days_in_month(12) As Int
Dim j_days_in_month(12) As Int
g_days_in_month(0) = 31
g_days_in_month(1) = 28
g_days_in_month(2) = 31
g_days_in_month(3) = 30
g_days_in_month(4) = 31
g_days_in_month(5) = 30
g_days_in_month(6) = 31
g_days_in_month(7) = 31
g_days_in_month(8) = 30
g_days_in_month(9) = 31
g_days_in_month(10)= 30
g_days_in_month(11)= 31

j_days_in_month(0) = 31
j_days_in_month(1) = 31
j_days_in_month(2) = 31
j_days_in_month(3) = 31
j_days_in_month(4) = 31
j_days_in_month(5) = 31
j_days_in_month(6) = 30
j_days_in_month(7) = 30
j_days_in_month(8) = 30
j_days_in_month(9) = 30
j_days_in_month(10)= 30
j_days_in_month(11)= 29

gy = g_y – 1600
gm = g_m – 1
gd = g_d – 1

g_day_no = 365 * gy + ((gy + 3) / 4) – ((gy + 99) / 100) + ((gy + 399) / 400)

For i = 0 To gm – 1
g_day_no = g_day_no + g_days_in_month(i)
Next

g_day_no = g_day_no + gd
Dim j_day_no,j_np,jy As Int
j_day_no = g_day_no – 79
j_np = (j_day_no / 12053)
j_day_no = j_day_no Mod 12053
jy = 979 + 33 * j_np + 4 * (j_day_no / 1461)
j_day_no = j_day_no Mod 1461

If j_day_no >= 366 Then
jy = jy + ((j_day_no – 1) / 365)
j_day_no = (j_day_no – 1) Mod 365
End If

i = 0
Do While (i < 11 And j_day_no >= j_days_in_month(i))
j_day_no = j_day_no – j_days_in_month(i)
i = i + 1
Loop

Dim jm,jd As Int
jm = i + 1
jd = j_day_no + 1
Dim res As String
res = jy & “/” & jm & “/” & jd
Return res
End Sub

You May Also Like

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *