EN

Search
Close this search box.

موستانگ، وحشیِ دوست داشتنی

پاسخ داده شد
0
0

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

  • شما باید برای ارسال دیدگاه شوید
پاسخ عالی
0
0

برای تبدیل میلادی به شمسی از متد زیر استفاده می کنیم.

    public static int[] gregorian_to_jalali(int g_y, int g_m, int g_d) {  
GregorianCalendar gregorianDate = new GregorianCalendar(g_y, g_m - 1, g_d);
        int[] g_days_in_month = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        int[] j_days_in_month = {31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29};
        int gy, gm, gd, g_day_no, j_day_no, j_np, jy, temp, jm, jd;
        gy = g_y - 1600;
        gm = g_m - 1;
        gd = g_d - 1;
        g_day_no = 365 * gy + ((gy + 3) / 4) - ((gy + 99) / 100) + ((gy + 399) / 400);
        for (int 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)))
            g_day_no++;       /* leap and after Feb */
        g_day_no += gd;
        j_day_no = g_day_no - 79;
        j_np = (j_day_no / 12053); /* 12053 = 365*33 + 32/4 */
        j_day_no = j_day_no % 12053;
        jy = 979 + 33 * j_np + 4 * (j_day_no / 1461); /* 1461 = 365*4 + 4/4 */
        j_day_no %= 1461;
        if (j_day_no >= 366) {
            jy += ((j_day_no - 1) / 365);
            j_day_no = (j_day_no - 1) % 365;
        }
        temp = 0;
        for (int i = 0; i < 11 && j_day_no >= j_days_in_month[i]; ++i, temp = i) {
            j_day_no -= j_days_in_month[i];
        }
        jm = temp + 1;
        jd = j_day_no + 1;
        int dayInWeek = gregorianDate.get(GregorianCalendar.DAY_OF_WEEK);
        dayInWeek += 1;
        if (dayInWeek == 8) dayInWeek = 1;
        int[] back = {jy, jm, jd, dayInWeek};
        return back;
}
  • شما باید برای ارسال دیدگاه شوید
نمایش 1 نتیجه
پاسخ شما
اگر قبلاً حساب کاربری دارید با پر کردن فیلد های زیر یا به عنوان مهمان ارسال کنید.
نام*
ایمیل*
وب سایت