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

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


تبدیل تاریخ میلادی به شمسی با جاوااسکریپت 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>

 

در کدهای بالا مثال های برای کار با متدهای جهت تبدیل انواع فرمت تاریخ نوشته شده

دانلود

نویسنده حسین فتحی
گروه مطلب JavaScript
نوع مطلب سورس کد و آموزش
تاریخ انتشار ۱۱ فروردین ۱۳۹۶
منبع ایران گنج
تعداد نظرات ۶
قیمت کاربران مهمان
توضیح توجه:
  • زمانی که روی لینک دانلود کلیک می کنید لینک دانلود به مدت 24 ساعت معتبر خواهد بود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

نظر / سوال

Captcha
نظرات کاربران

  • علی

    البته الان دیگه این قدیمی شده و برای تبدیل میلادی به شمسی فقط کافیه که متد ToLocalString("fa-IR") رو صدا بزنید روی ابجکت Date

    پاسخ
    • احمدی

      خدا خیرت بده، آره کار کرد

      پاسخ
      • حسین فتحی

        خواهش میکنم

        موفق باشید

        پاسخ
  • علی

    سلام

    در متن فوق گفتین «در پست های قبلی نحوه تبدیل تاریخ میلادی به شمسی وتاریخ شمسی به میلادی را مورد برررسی قرار دادیم» کدام پست؟ من هر چی گشتم چیزی پیدا نکرد!

    پاسخ
    • حسین فتحی

      سلام

      در قسمت جستجوی سایت سرچ کنید

      پاسخ
  • زهرا

    سپاس گذارم مطلب بسیار مفیدی است

    پاسخ