تبدیل تاریخ میلادی به شمسی با جاوااسکریپت
تبدیل تاریخ میلادی به شمسی با جاوااسکریپت Javascript
در پست های قبلی نحوه تبدیل تاریخ میلادی به شمسی وتاریخ شمسی به میلادی را مورد برررسی قرار دادیم دراین آموزش نحوه تبدیل تاریخ میلادی به شمسی توسط جاوااسکریپت می پردازیم.
ابتدا یک فایل جاوااسکریپت به نام persian-date-convert ایجاد کنید و کدهای زیر را به آن اضافه کنید
کدهای جاوا اسکرپیت
function div(a, b) { return parseInt((a / b)); } function gregorian_to_jalali(g_y, g_m, g_d) { var g_days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; var j_days_in_month = [31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29]; var jalali = []; var gy = g_y - 1600; var gm = g_m - 1; var gd = g_d - 1; var g_day_no = 365 * gy + div(gy + 3, 4) - div(gy + 99, 100) + div(gy + 399, 400); for (var 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; var j_day_no = g_day_no - 79; var j_np = div(j_day_no, 12053); /* 12053 = 365*33 + 32/4 */ j_day_no = j_day_no % 12053; var 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 (var i = 0; i < 11 && j_day_no >= j_days_in_month[i]; ++i) j_day_no -= j_days_in_month[i]; var jm = i + 1; var jd = j_day_no + 1; jalali[0] = jy; jalali[1] = jm; jalali[2] = jd; return jalali; //return jalali[0] + "_" + jalali[1] + "_" + jalali[2]; //return jy + "/" + jm + "/" + jd; } function get_year_month_day(date) { var convertDate; var y = date.substr(0, 4); var m = date.substr(5, 2); var d = date.substr(8, 2); convertDate = gregorian_to_jalali(y, m, d); return convertDate; } function get_hour_minute_second(time) { var convertTime = []; convertTime[0] = time.substr(0, 2); convertTime[1] = time.substr(3, 2); convertTime[2] = time.substr(6, 2); return convertTime; } function convertDate(date) { var convertDateTime = get_year_month_day(date.substr(0, 10)); convertDateTime = convertDateTime[0] + "/" + convertDateTime[1] + "/" + convertDateTime[2] + " " + date.substr(10); return convertDateTime; } function get_persian_month(month) { switch (month) { case 1: return "فروردین"; break; case 2: return "اردیبهشت"; break; case 3: return "خرداد"; break; case 4: return "تیر"; break; case 5: return "مرداد"; break; case 6: return "شهریور"; break; case 7: return "مهر"; break; case 8: return "آبان"; break; case 9: return "آذر"; break; case 10: return "دی"; break; case 11: return "بهمن"; break; case 12: return "اسفند"; break; } }
در کدهای بالا چندین تابع برای تبدیل های تاریخ نوشتیم.
کدهای Html
<!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8" /> <script src="jquery-2.2.3.min.js"></script> <script src="persian-date-convert.js"></script> </head> <body> <div id="gregorian_to_jalali"></div> <div id="get_year_month_day"></div> <div id="get_hour_minute_second"></div> <div id="convertDate"></div> <div id="get_persian_month"></div> </body> </html>
در کدهای html بالا ابتدا لینک جی کوئری را قرار دادیم و سپس لینک فایل جاوااسکریپتی که در مرحله قبل ایجاد کردیم قرار دادیم. سپس از چندین تگ div برای نمایش تاریخ ها در آن قرار دادیم.
نحوه استفاده از متدهای جاوااسکریپت نوشته شده در کدهای بالا
<script type="text/javascript"> $("#gregorian_to_jalali").text(gregorian_to_jalali(2017, 03, 29)); var datetime = new Date(); var date = datetime.getFullYear() + "/" + datetime.getMonth() + "/" + datetime.getDay(); $("#get_year_month_day").text(get_year_month_day(date)); //var time = datetime.getTime(); var time = datetime.getHours() + ":" + datetime.getMinutes() + ":" + datetime.getSeconds(); $("#get_hour_minute_second").text(get_hour_minute_second(time)); $("#convertDate").text(convertDate(date)); $("#get_persian_month").text(get_persian_month(1)); </script>
در کدهای بالا مثال های برای کار با متدهای جهت تبدیل انواع فرمت تاریخ نوشته شده
نظر / سوال