PDA

View Full Version : تبدیل تاریخ شمسی به میلادی



behrooz&emad
دوشنبه 17 اردیبهشت 1386, 13:40 عصر
سلام دوستان تبدیل تاریخ شمسی به میلادی را در جاوا می خواستم.
ممنون می شم اگر راهنمایی کنید.

fdehghani
سه شنبه 18 اردیبهشت 1386, 14:24 عصر
سلام
من متدش را برات میگذارم
اگه مشکلی داشتی بهم بگو

public static String jalali_to_gregorian(int jy1,int jm1,int jd1){
int g_days_in_month[] =new int[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int j_days_in_month[] =new int[]{31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29};
int jy=jy1-979;
int jm=jm1-1;
int jd=jd1-1;
int j_day_no = 365*jy + doubleToInt(jy/33)*8 + doubleToInt((jy%33+3)/4);
int i;
for (i=0; i < jm; ++i)
j_day_no += j_days_in_month[i];
j_day_no += jd;
int g_day_no = j_day_no+79;
int gy = 1600 + 400*doubleToInt(g_day_no/146097); /* 146097 = 365*400 + 400/4 - 400/100 + 400/400 */
g_day_no = g_day_no % 146097;
boolean leap = true;
if (g_day_no >= 36525) /* 36525 = 365*100 + 100/4 */
{
g_day_no--;
gy += 100*doubleToInt(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*doubleToInt(g_day_no/1461); /* 1461 = 365*4 + 4/4 */
g_day_no %= 1461;
if (g_day_no >= 366) {
leap = false;
g_day_no--;
gy += doubleToInt(g_day_no/365);
g_day_no = g_day_no % 365;
}
for (i = 0; g_day_no >= g_days_in_month[i] +((i == 1 && leap)?1:0); i++)
g_day_no -= g_days_in_month[i] + ((i == 1 && leap)?1:0);
int m=i+1;
int d=g_day_no+1;
return gy+"-"+m+"-"+d;

}

behrooz&emad
چهارشنبه 19 اردیبهشت 1386, 10:53 صبح
دوست عزیز متد doubletoint جواب نمیده.
اگه میشه کمی توضیح بدهید.

fdehghani
چهارشنبه 19 اردیبهشت 1386, 10:58 صبح
ببخشید من متدش را یادم رفت بزارم
اینو به کلاست اضافه کن

private static int doubleToInt(double f){
Double fint=new Double(f);
return fint.intValue();
}

margia
چهارشنبه 09 خرداد 1386, 13:21 عصر
برنامه ای برای نوشتن تاریخ و ساعت حال در java

fdehghani
یک شنبه 13 خرداد 1386, 13:31 عصر
یعنی چی؟
بیشتر توضیح بده