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

من شخصا همیشه با این تبدیل مشکل داشتم. هزار جور الگوریتم و نظریه و کد و … دیده بودم و از همشون هم استفاده کردم. همشون هم برخلاف ادعای نویسنده با سال های کبیسه مشکل داشتن. تا اینکه برخورد کردم به یه الگوریتم که روش محاسبه تاریخ رو در اکسل شرح داده بود. از اون الگوریتم استفاده کردم و این کانورتور رو حدود یک سال و نیم پیش نوشتم و ازش استفاده کردم تا به امروز.

Code Block

تا الان که درست جواب داده و من هم ازش راضیم. کد هسته اصلی هم اینه:

<%

Function FLOOR(My_Num)

the_Int = INT (My_Num)

if the_Int> My_Num then the_Int = the_Int -1

FLOOR=the_Int

End Function


//Selecting a Date to Convert : Today is Selected

Date_to_Convert = date()

//Calculating No. of Days from 1/1/1900 until now

days_until_today=datediff(“d”,01/01/1900,date())

// Defining This Jalali Year: Easy Formula Based on Excel Calculation

Jalali_Year_Val=int((days_until_today-7358)/365.25)+1299

// This Block Calculates Jalali Month Value

// Start of Block

Var0=days_until_today-7385

If INT(((Var0)*100 mod 36525)/100)<186 then

Var1= INT(INT(((Var0)*100 mod 36525)/100)/31)

Else

IF (INT((Var0)/365.25) mod 4)=0 then

Var1= INT((INT(((Var0)*100 mod 36525)/100)-186)/30)+6

Else

IF INT(((Var0)*100 mod 36525)/100)<336 then

Var1= INT((INT(((Var0)*100 mod 36525)/100)-186)/30)+6

Else

INT((INT(((Var0)*100 mod 36525)/100)-336)/29)+11

End if

End if

End if

Jalali_Month_Val= (Var1 mod 12)+1

// End of Block

// This Block Calculates Jalali Day Value

// Start of Block

IF INT((Var0*100 mod 36525)/100)<186 then

Var1=(INT((Var0*100 mod 36525)/100) mod 31)+1

Else

IF (INT(Var0/365.25) mod 4)=0 then

Var1=(INT(((Var0*100 mod 36525)/100)-186) mod 30)+1

Else

IF INT((Var0*100 mod 36525)/100)<336 then

Var1=(INT(((Var0*100 mod 36525)/100)-186) mod 30)+1

Else

Var1= (INT(((Var0*100 mod 36525)/100)-336) mod 29)+1

End if

End if

End if

Jalali_Day_Val=Var1

// End of Block

// Final Step

// Echo

Jalali_Date_String = Jalali_Day_Val&” / “&Jalali_Month_Val&” / “&Jalali_Year_Val

Response.Write “<p dir=rtl>”&Jalali_Date_String&”<BR></p>”

%>

این کانورتور به ASP هست و خیلی ساده که با کمی دستکاری و تغییر می تونین قشنگترش کنید یا تبدیلش کنید به PHP یا VB یا هر چیز دیگه و ازش استفاده کنید.


Share this Post

Share

یک نظر بنویسید