Hallo zuammen,
ich benutze einen PersianDatePicker nun möchte ich das ausgewählten Datum in Gregorianischen Datum umwandeln.
Ich hab im internet die Brechnung gefunden. Das Jahr wird richtig umgewandelt aber der Monat und Der Tag nicht.
Kennt sich da einer damit aus und kann mir dabei helfen?
Code
		
					
			public static int g_days_in_month[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30,
            31, 30, 31 };
    public static int j_days_in_month[] = { 31, 31, 31, 31, 31, 31, 30, 30, 30,
            30, 30, 29 };
/**
     * Converts Persian date to gregorian date
     * */
    public static Calendar getGregorianCalendar(int year, int month, int day) {
        int gy, gm, gd;
        int jy, jm, jd;
        long g_day_no, j_day_no;
        boolean leap;
        int i;
        jy = year - 979;
        jm = month - 1;
        jd = day - 1;
        j_day_no = 365 * jy + (jy / 33) * 8 + (jy % 33 + 3) / 4;
        for (i = 0; i < jm; ++i)
            j_day_no += j_days_in_month[i];
        j_day_no += jd;
        g_day_no = j_day_no + 79;
        gy = (int) (1600 + 400 * (g_day_no / 146097)); /*
														 * 146097 = 365*400 +
														 * 400/4 - 400/100 +
														 * 400/400
														 */
        g_day_no = g_day_no % 146097;
        leap = true;
        if (g_day_no >= 36525) /* 36525 = 365*100 + 100/4 */
        {
            g_day_no--;
            gy += 100 * (g_day_no / 36524); /* 36524 = 365*100 + 100/4 - 100/100 */
            g_day_no = g_day_no % 36524;
            if (g_day_no >= 365)
                g_day_no++;
            else
                leap = false;
        }
        gy += 4 * (g_day_no / 1461); /* 1461 = 365*4 + 4/4 */
        g_day_no %= 1461;
        if (g_day_no >= 366) {
            leap = false;
            g_day_no--;
            gy += g_day_no / 365;
            g_day_no = g_day_no % 365;
        }
        for (i = 0; g_day_no >= g_days_in_month[i]
                + parsBooleanToInt(i == 1 && leap); i++)
            g_day_no -= g_days_in_month[i] + parsBooleanToInt(i == 1 && leap);
        gm = i + 1;
        gd = (int) (g_day_no + 1);
        GregorianCalendar gregorian = new  GregorianCalendar(gy, gm - 1, gd);
        return gregorian;
    }
    private static int parsBooleanToInt(Boolean sample) {
        if (sample)
            return 1;
        else
            return 0;
    } 
		