۱۱-اردیبهشت-۱۳۹۲, ۱۸:۴۷:۵۸
این کد دارای 2 تابع برای تبدیل تاریخ میلادی به خورشیدی و خورشیدی به میلادی هست که برای وب پارسی خیلی کاربرد داره
کد:
<!doctype html>
<!-- coded by lord_viper -->
<head>
<script>
function IsLeapYear(year){
if (((year % 4) == 0 && (year % 100) != 0) || ((year % 400) == 0) && (year % 100) == 0)
return true;
else
return false;
}
/*
* PERSIAN TO GEORGIAN
*/
function persian_to_gregorian(jy, jm, jd){
var gd;
j_days_sum_month = [31,62,93,124,155,186,216,246,276,306,336,365];
g_days_in_month = [31,28,31,30,31,30,31,31,30,31,30,31];
g_days_leap_month = [31,29,31,30,31,30,31,31,30,31,30,31];
gd = parseInt(j_days_sum_month[jm - 2]) + parseInt(jd);
gy = parseInt(jy) + 621;
if (gd > 286)
gy++;
if (IsLeapYear(gy - 1) && 286 < gd)
gd--;
if (gd > 286)
gd -= 286;
else
gd += 79;
if (IsLeapYear(gy))
{
for (gm = 0; gd > g_days_leap_month[gm]; gm++)
{
gd -= g_days_leap_month[gm];
}
}
else
{
for (gm = 0; gd > g_days_in_month[gm]; gm++)
gd -= g_days_in_month[gm];
}
gm++;
return [gy,gm,gd];
}
/*
* GEORGIAN TO PERSIAN
*/
function gregorian_to_persian(gy, gm, gd){
j_days_in_month = [31,31,31,31,31,31,30,30,30,30,30,29];
g_days_sum_month = [31,59,90,120,151,181,212,243,273,304,334,365];
dayofyear = parseInt(g_days_sum_month[gm - 2]) + parseInt(gd);
if (dayofyear > 79)
{
jd = dayofyear - 79;
jy = gy - 621;
for (i = 0; jd > j_days_in_month[i]; i++)
jd -= j_days_in_month[i];
} else
{
leap = (gy - 1) % 4;
if(leap == 0){
jd = 287 + dayofyear;
}
else{
jd = 286 + dayofyear;
}
jy = gy - 622;
if (leap == 0 && jd == 366)
return [jy,12,30];
for (i = 0; jd > j_days_in_month[i]; i++)
jd -= j_days_in_month[i];
}
jm = ++i;
return [jy,jm,jd];
}
</script>
</head>
<body>
<script>
alert(gregorian_to_persian('2013', '5', '1')[0]);
</script>
</body>
</html>