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

کد زیر تبدیل تاریخ میلادی به شمسی را به خوبی انجام می دهد، من برای منظور خاصی خروجی تابع را به صورتی که در زیر مشاهده می کنید طراحی کرده‌ام، شما می توانید خروجی های دیگری از تابع برای خود بگیرید:

public String gregorian_to_jalali(Integer ret_val)
    {
        Calendar c = Calendar.getInstance();
        Integer y = c.get(Calendar.YEAR);
        Integer m = c.get(Calendar.MONTH);
        Integer d = c.get(Calendar.DAY_OF_MONTH);
        Integer h = c.get(Calendar.HOUR_OF_DAY);
        Integer min = c.get(Calendar.MINUTE);
        Integer[] g_days_in_month = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        Integer[] j_days_in_month = {31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29};

        Integer gy = y - 1600;
        Integer gm = m;
        Integer gd = d - 1;

        Integer g_day_no = 365 * gy + ((gy + 3) / 4) - ((gy+99) / 100)+ ((gy+399) / 400);

        for (Integer 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;

        Integer j_day_no = g_day_no-79;

        Integer j_np = (j_day_no / 12053);
        j_day_no %= 12053;

        Integer  jy = 979+ 33*j_np + 4*(j_day_no / 1461);

        j_day_no %= 1461;

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

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

        String ret = "";
        switch (ret_val) {
        case 1: //sal
            ret = jy.toString();
            break;
        case 2: //mah
            ret = jm.toString();
            break;
        case 3: //ruz
            ret = jd.toString();
            break;
        case 4: //saat
            //Integer h = dt1.getHours();
            ret = h.toString();
            break;
        case 5: //daghighe
            //Integer min = dt1.getMinutes();
            ret = min.toString();
            break;
        default:
            break;
        }
        return ret;
    }