Advertisement
mmayoub

Date class

Mar 10th, 2023
624
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.20 KB | Software | 0 0
  1. // Date - تمثل تاريخ يوم في السنة
  2. public class Date {
  3.     private int day; // عدد صحيح يمثل اليوم في الشهر (1 حتى 31)
  4.     private int month; // عدد صحيح يمثل الشهر(1 حتى 12)
  5.  
  6.     // عملية تتلقي اليوم والشهر وتقوم ببناء تاريخ مناسب
  7.     // لا حاجة لفحص صحة المعطيات
  8.     public Date(int day, int month) {
  9.         this.day = day;
  10.         this.month = month;
  11.     }
  12.  
  13.     // عملية تبني تاريخ يمثل أول يوم في السنة
  14.     public Date() {
  15.         this(1, 1);
  16.     }
  17.  
  18.     // تعيد العملية اليوم من التاريخ الحالي
  19.     public int getDay() {
  20.         return day;
  21.     }
  22.  
  23.     // تعيد العملية الشهر من التاريخ الحالي
  24.     public int getMonth() {
  25.         return month;
  26.     }
  27.  
  28.     // تتلقى العملية عددا صحيحا يمثل يوم في الشهر وتقوم بحتلنة اليوم في التاريخ
  29.     // الحالي
  30.     // لا حاجة لفحص صحة المعطيات
  31.     public void setDay(int day) {
  32.         this.day = day;
  33.     }
  34.  
  35.     // تتلقى العملية عددا صحيحا يمثل رقم الشهر وتقوم بحتلنة الشهر في التاريخ الحالي
  36.     // لا حاجة لفحص صحة المعطيات
  37.     public void setMonth(int month) {
  38.         this.month = month;
  39.     }
  40.  
  41.     // تتلقى العملية تاريخ وتعيد صدق إذا كان التاريخ الحالي قبل التاريخ الذي تم
  42.     // تلقيه كبارامتر, خلاف ذلك تعيد العملية كذب
  43.     public boolean before(Date date) {
  44.         if (this.month < date.month)
  45.             return true;
  46.  
  47.         return (this.day < date.day);
  48.     }
  49.  
  50.     // تتلقى العملية تاريخ وتعيد صدق إذا كان التاريخ الحالي بعد التاريخ الذي تم
  51.     // تلقيه كبارامتر, خلاف ذلك تعيد العملية كذب
  52.     public boolean after(Date date) {
  53.         if (this.month > date.month)
  54.             return true;
  55.  
  56.         return (this.day > date.day);
  57.     }
  58.  
  59.     // تعيد العملية تاريخ اليوم الذي يلي التاريخ الحالي
  60.     public Date nextDate() {
  61.         return this.dateAfter(1);
  62.     }
  63.  
  64.     // تعيد العملية تاريخ اليوم بعد مضي عدد الأيام الذي تم تلقيه كبارمتر ابتداءً من
  65.     // التاريخ الحالي
  66.     // لا حاجة لفحص صحة المعطيات
  67.     public Date dateAfter(int days) {
  68.         int d = this.day + days;
  69.         Date result = new Date(d, this.month);
  70.  
  71.         while (result.day > result.lastDayInMonth()) {
  72.             result.day = result.day - result.lastDayInMonth();
  73.             result.month = result.month + 1;
  74.  
  75.             if (result.month > 12)
  76.                 result.month = 1;
  77.         }
  78.  
  79.         return result;
  80.     }
  81.  
  82.     // تعيد العملية رقم اليوم الأخير من الشهر الذي يمثله التاريخ الحالي
  83.     // (شهر شباط 28 يوما دائما)
  84.     public int lastDayInMonth() {
  85.         switch (this.month) {
  86.         case 1:
  87.         case 3:
  88.         case 5:
  89.         case 7:
  90.         case 8:
  91.         case 10:
  92.         case 12:
  93.             return 31;
  94.  
  95.         case 4:
  96.         case 6:
  97.         case 9:
  98.         case 11:
  99.             return 30;
  100.  
  101.         default:
  102.             return 28;
  103.         }
  104.     }
  105.  
  106.     @Override
  107.     public String toString() {
  108.         return "Date [" + day + "/" + month + "]";
  109.     }
  110. }
  111.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement