الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تعديل كود تحويل التاريخ

مغلق
بدأه العيافـي في 4 أكتوبر 2006 · 1 رد · 609 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هل يمكن اجراء تعديل على هذا الكود ليرجع بنتائج صحيحه.

الغرض من الكلاس هو تحويل التاريخ الهجري الى ميلادي و العكس متبعا القوانين الرياضية الموجود في الملف المرفق.

 class Converter{

	private String hijri, milad;
	private int dH, mH, yH,dM, mM, yM;

	public Converter(){	
	}

	public void converterToHijri(int y, int m, int d){
		dM=d;
		mM=m;
		yM=y;
		yolyaniToHijri(miladToYolyani(y,m,d));
	}
	public void converterToMilad(int y, int m, int d){
		dH=d;
		mH=m;
		yH=y;
		yolyaniToMilad(hijriToYolyani(y,m,d));
	}



	private void yolyaniToHijri(int jd){
		int l,n,j,m,d,y;
		l = (jd) - 1948439 + 10632;
		n = ((l - 1) / 10631);
		l = l - 10631 * n + 354;
		j = ((10985 - l) / 5316) * ((50 * l) / 17719) + (l / 5670) * ((43 * l) / 15238);
		l = l - ((30 - j) / 15) * ((17719 * j) / 50) - (j / 16) * ((15238 * j) / 43) + 29;
		m = ((24 * l) / 709);
		d = l - ((709 * m) / 24);
		y = (30 * n + j - 30);

		dH=d;
		mH=m;
		yH=y;
	}
	private void yolyaniToMilad(int jd){
		int l,n,i,j,d,m,y;
		l = jd + 68569;
		n = (4 * l) / 146097;
		l = l - (146097 * n + 3) / 4;
		i = (4000 * (l+1)) / 1461001;
		l = l - (1461 * i) / 4 + 31;
		j = (80 * l) / 2447;
		d = l - (2447 * j) / 80;
		l = j / 11;
		m = j + 2 - 12 * l;
		y = 100 * (n - 49) + i + l;

		dM=d;
		mM=m;
		yM=y;
	}

	private int hijriToYolyani(int y, int m, int d){
		return ((int)((11*y+3)/30)) + ((int)(354*y)) + ((int)(30*m)) 
			- ((int)((m-1)/2)) + d + 1948439 - 385;
	}
	private int miladToYolyani(int y, int m, int d){
		int b=0;
		if(m<=2){
			y--;
			m+=12;
		}
		if(y<1582 && m<10 && d<15){
			int a = (int)(y/100);
			b = 2 - a + ((int)(a/4));
		}
		return (int)(((int)(365.25*(y+4716))) + ((int)(30.6001*(m+1))) + d + b - 1524.5);
	}
	public String getHijri(){
		return String.format("%d-%d-%d",yH,mH,dH);
	}
	public String getMilad(){
		return String.format("%d-%d-%d",yM,mM,dM);
	}
	public String toString(){
		return String.format("H:%s  :  M:%s", getHijri(), getMilad());
	}
}

class Test{
	public static void main(String[]args){
		Converter c=new Converter();
		c.converterToMilad(1427,9,12);
		System.out.println(c.toString());
		c.converterToHijri(2006,10,4);
		System.out.println(c.toString());
	}
}

2001_conv.pdf

#2
اقتباس
هل يمكن اجراء تعديل على هذا الكود ليرجع بنتائج صحيحه.

يعني هذا الكود لا يعطي نتائج صحيحة على كل حال كتبت كود في قسم J2ME لتحويل ميلادي الى هجري ويعطي نتائج صحيحة قم بتعديل المعادلة لعمل العكس

لست متواجد بشكل يومي

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…