اذهب إلى المحتوى

لوحة المتصدرين

  1. E.Nourddine

    E.Nourddine

    الأعضاء


    • نقاط

      1

    • المساهمات

      1458


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 05/08/18 in أجوبة

  1. نعم يمكننا الحصول على عمر شخص معين انطلاقا من استعمال التاريخ Date و Calendar classes -كلاسات الكالندار-، حيث ترتكز هذه الطريقة على أساسيات لغة جافا، والتي يمكن لأي أحد ملمّ بأساسيات اللغة إنجازها. نبدأ بملف Age.java: class Age { private int days; private int months; private int years; private Age() { //الافتراضي constructor } public Age(int days, int months, int years) { this.days = days; this.months = months; this.years = years; } public int getDays() { return this.days; } public int getMonths() { return this.months; } public int getYears() { return this.years; } @Override public String toString() { return years + " Years, " + months + " Months, " + days + " Days"; } } حيث تقبل الوظيفة Age ثلاث عناصر: اليوم، الشهر والسنة أي عناصر التاريخ الأساسية، مع gets و Tostring لتحويل التاريخ إلى نص. الكلاس الثانية هي: AgeCalculator، حيث تقوم هذه الأخيرة بحساب العمر انطلاقا من تاريخ Age بحساب الفرق مقارنة مع تاريخ اليوم: import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class AgeCalculator { private static Age calculateAge(Date birthDate) { int years = 0; int months = 0; int days = 0; // خاص بتاريخ الازدياد المدخل سابقا calendar Calendar birthDay = Calendar.getInstance(); birthDay.setTimeInMillis(birthDate.getTime()); // خاص بتاريخ اليوم calendar long currentTime = System.currentTimeMillis(); Calendar now = Calendar.getInstance(); now.setTimeInMillis(currentTime); //الفرق بين السنوات years = now.get(Calendar.YEAR) - birthDay.get(Calendar.YEAR); int currMonth = now.get(Calendar.MONTH) + 1; int birthMonth = birthDay.get(Calendar.MONTH) + 1; //الفرق بين الأشهر months = currMonth - birthMonth; //فحص فرق الأشهر if (months < 0) { years--; months = 12 - birthMonth + currMonth; if (now.get(Calendar.DATE) < birthDay.get(Calendar.DATE)) months--; } else if (months == 0 && now.get(Calendar.DATE) < birthDay.get(Calendar.DATE)) { years--; months = 11; } //حساب الفرق بين الأيام if (now.get(Calendar.DATE) > birthDay.get(Calendar.DATE)) days = now.get(Calendar.DATE) - birthDay.get(Calendar.DATE); else if (now.get(Calendar.DATE) < birthDay.get(Calendar.DATE)) { int today = now.get(Calendar.DAY_OF_MONTH); now.add(Calendar.MONTH, -1); days = now.getActualMaximum(Calendar.DAY_OF_MONTH) - birthDay.get(Calendar.DAY_OF_MONTH) + today; } else { days = 0; if (months == 12) { years++; months = 0; } } //إنشاء تاريخ ازدياد جديد return new Age(days, months, years); } عملية الحساب انطلاقا من Main: public static void main(String[] args) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); Date birthDate = sdf.parse("29/11/1981"); //Yeh !! It's my date of birth :-) Age age = calculateAge(birthDate); //العمر هو System.out.println(age); } } المُخرجات: 32 Years, 5 Months, 27 Days يمكنك أيضا الاعتماد على الطريقة المقدمة هنا.
    1 نقطة
×
×
  • أضف...