ژوپین
  1. خانه
  2. بلاگ
  3. آموزش
  4. فرانت اند(اhtml-css-javascript)
  5. تبدیل تاریخ میلادی به شمسی یا جلالی با جاوااسکریپت

تبدیل تاریخ میلادی به شمسی یا جلالی با جاوااسکریپت

آموزشفرانت اند(اhtml-css-javascript)

نکات مهم این مطلب

چگونه تاریخ میلادی را به شمسی تبدیل کنیم

چگونه تبدیل تاریخ میلادی به شمسی را با جاوااسکریپت انجام دهیم

تابعی که تاریخ میلادی را میگیرد و تاریخ شمسی را بر میگرداند

تابع جاوا اسکریپت برای تبدیل تاریخ

در بسیاری از موارد نیاز داریم که تاریخ میلادی را به شمسی تبدیل کنیم. مثلا در یک متن چندیت تاریخ میلادی داریم که نیاز داریم همگی به شمسی تبدیل شوند. قاعدتا دشوار است که هر بار تاریخ را محاسبه کنیم و یا از ابزار آنلاین استفاده کنیم.


در این تابع جاوااسکریپت ، با دادن سال ، ماه و روز میلادی ، در خروجی سال ، ماه و روز شمسی را در یافت میکنیم.


function gregorian_to_jalali ($g_y, $g_m, $g_d) 
{
let $g_days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
let $j_days_in_month = [31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29];
let months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];




$gy = $g_y-1600;
$gm = $g_m-1;
$gd = $g_d-1;

$g_day_no = 365*$gy+__DIV__($gy+3,4)-__DIV__($gy+99,100)+__DIV__($gy+399,400);

for ($i=0; $i < $gm; ++$i)
$g_day_no += $g_days_in_month[$i];
if ($gm>1 && (($gy%4==0 && $gy%100!=0) || ($gy%400==0)))
/* leap and after Feb */
$g_day_no++;
$g_day_no += $gd;

$j_day_no = $g_day_no-79;

$j_np = __DIV__($j_day_no, 12053); /* 12053 = 365*33 + 32/4 */
$j_day_no = $j_day_no % 12053;

$jy = 979+33*$j_np+4*__DIV__($j_day_no,1461); /* 1461 = 365*4 + 4/4 */

$j_day_no %= 1461;

if ($j_day_no >= 366) {
$jy += __DIV__($j_day_no-1, 365);
$j_day_no = ($j_day_no-1)%365;
}

for ($i = 0; $i < 11 && $j_day_no >= $j_days_in_month[$i]; ++$i)
$j_day_no -= $j_days_in_month[$i];
$jm = $i+1;
$jd = $j_day_no+1;

return [$jy, $jm, $jd];
}

 


مثالی برای استفاده از تابع بالا:


 


 


var ShamsiDate = gregorian_to_jalali(2025,1,16);

console.log(ShamsiDate);

/*
خروجی بالا یک آرایه است

ShamsiDate[0] = 1403

ShamsiDate[0] = 11

ShamsiDate[0] = 10
*/​

نظرات



ارسال نظر

جهت قرار دادن کد در متن کامنت ، متن مورد نظر را انتخاب کنید و دکمه بالا را بزنید

گفتگو با پشتیبان