This week only. Pastebin PRO Accounts Christmas Special! Don't miss out!Want more features on Pastebin? Sign Up, it's FREE!
Guest

Untitled

By: a guest on Jan 16th, 2013  |  syntax: None  |  size: 4.21 KB  |  views: 27  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. public class Date {
  2.  
  3.         private int day;
  4.         private int month;
  5.         private int year;
  6.  
  7.         public Date(int year, int month, int day) {
  8.                 if (!validDate(year, month, day)) {
  9.                         throw new IllegalArgumentException("Not a valid date");
  10.                 }
  11.                 this.day = day;
  12.                 this.month = month;
  13.                 this.year = year;
  14.         }
  15.  
  16.         public void incrementOneDay() {
  17.                 day += 1;
  18.                 if (day == 32 && month == 1) {
  19.                         day = 1;
  20.                         month = 2;
  21.  
  22.                 } else if (day == 29 && month == 2 && !isLeapyear(year)) {
  23.                         day = 1;
  24.                         month = 3;
  25.                 } else if (day == 30 && month == 2 && isLeapyear(year)) {
  26.                         day = 1;
  27.                         month = 3;
  28.                 } else if (day == 32 && month == 3) {
  29.                         day = 1;
  30.                         month = 4;
  31.                 } else if (day == 31 && month == 4) {
  32.                         day = 1;
  33.                         month = 5;
  34.                 } else if (day == 32 && month == 5) {
  35.                         day = 1;
  36.                         month = 6;
  37.                 } else if (day == 31 && month == 6) {
  38.                         day = 1;
  39.                         month = 7;
  40.                 } else if (day == 32 && month == 7) {
  41.                         day = 1;
  42.                         month = 8;
  43.                 } else if (day == 32 && month == 8) {
  44.                         day = 1;
  45.                         month = 9;
  46.                 } else if (day == 31 && month == 9) {
  47.                         day = 1;
  48.                         month = 10;
  49.                 } else if (day == 32 && month == 10) {
  50.                         day = 1;
  51.                         month = 11;
  52.                 } else if (day == 31 && month == 11) {
  53.                         day = 1;
  54.                         month = 12;
  55.                 } else if (day == 32 && month == 12) {
  56.                         day = 1;
  57.                         month = 1;
  58.                         year += 1;
  59.                 }
  60.  
  61.         }
  62.  
  63.         public void incrementNDays(int n) {
  64.                 for (int i = 1; i <= n; i++) {
  65.                         incrementOneDay();
  66.                 }
  67.         }
  68.  
  69.         public void decrementOneDay() {
  70.                 day -= 1;
  71.                 if (day == 0) {
  72.                         if (month == 1) {
  73.                                 day = 31;
  74.                                 month = 12;
  75.                                 year += -1;
  76.                         } else if (month == 2) {
  77.                                 day = 31;
  78.                                 month = 1;
  79.                         } else if (month == 3) {
  80.                                 if (isLeapyear(year)) {
  81.                                         day = 29;
  82.                                         month = 2;
  83.                                 } else {
  84.                                         day = 28;
  85.                                         month = 2;
  86.                                 }
  87.                         } else if (month == 4) {
  88.                                 day = 31;
  89.                                 month = 3;
  90.                         } else if (month == 5) {
  91.                                 day = 30;
  92.                                 month = 4;
  93.                         } else if (month == 6) {
  94.                                 day = 31;
  95.                                 month = 5;
  96.                         } else if (month == 7) {
  97.                                 day = 30;
  98.                                 month = 6;
  99.                         } else if (month == 8) {
  100.                                 day = 31;
  101.                                 month = 7;
  102.                         } else if (month == 9) {
  103.                                 day = 31;
  104.                                 month = 8;
  105.                         } else if (month == 10) {
  106.                                 day = 30;
  107.                                 month = 9;
  108.                         } else if (month == 11) {
  109.                                 day = 31;
  110.                                 month = 10;
  111.                         } else if (month == 12) {
  112.                                 day = 30;
  113.                                 month = 11;
  114.                         }
  115.                 }
  116.         }
  117.  
  118.         public void decrementNDays(int n) {
  119.                 for (int i = 1; i <= n; i++) {
  120.                         decrementOneDay();
  121.                 }
  122.         }
  123.  
  124.         public static boolean isLeapyear(int year) {
  125.                 return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
  126.         }
  127.  
  128.         public static int daysBetweenDates(Date dateOne, Date dateTwo) {
  129.                 int numDays = 0;
  130.                 boolean date1Smaller = true;
  131.                 Date date1 = new Date(dateOne.getYear(), dateOne.getMonth(),
  132.                                 dateOne.getDay());
  133.                 Date date2 = new Date(dateTwo.getYear(), dateTwo.getMonth(),
  134.                                 dateTwo.getDay());
  135.  
  136.                 if (date1.getYear() > date2.getYear()) {
  137.                         date1Smaller = false;
  138.                 } else if (date1.getYear() < date2.getYear()) {
  139.                         date1Smaller = true;
  140.                 } else if (date1.getMonth() < date2.getMonth()) {
  141.                         date1Smaller = true;
  142.                 } else if (date1.getMonth() > date2.getMonth()) {
  143.                         date1Smaller = false;
  144.                 } else if (date1.getDay() < date2.getDay()) {
  145.                         date1Smaller = true;
  146.                 } else if (date1.getDay() > date2.getDay()) {
  147.                         date1Smaller = false;
  148.                 } else {
  149.                         return 0;
  150.                 }
  151.  
  152.                 while (!date1.toString().equals(date2.toString())) {
  153.                         numDays++;
  154.                         if (date1Smaller) {
  155.                                 date1.incrementOneDay();
  156.                         } else {
  157.                                 date1.decrementOneDay();
  158.                         }
  159.                 }
  160.  
  161.                 return numDays;
  162.         }
  163.  
  164.         public static boolean validDate(int year, int month, int day) {
  165.                 if (day < 1 || day > 31) {
  166.                         return false;
  167.                 }
  168.                 if (month < 1 || month > 12) {
  169.                         return false;
  170.                 }
  171.                 if (year < 0) {
  172.                         return false;
  173.                 }
  174.                 if (day == 31
  175.                                 && (month == 2 || month == 4 || month == 6 || month == 9 || month == 11)) {
  176.                         return false;
  177.                 }
  178.                 if (day > 28 && month == 2 && !isLeapyear(year)) {
  179.                         return false;
  180.                 }
  181.                 if (day > 29 && month == 2 && isLeapyear(year)) {
  182.                         return false;
  183.                 }
  184.  
  185.                 return true;
  186.         }
  187.  
  188.         public int getMonth() {
  189.                 return month;
  190.         }
  191.  
  192.         public int getYear() {
  193.                 return year;
  194.         }
  195.  
  196.         public int getDay() {
  197.                 return day;
  198.         }
  199.  
  200.         public String toString() {
  201.                 String dateString = year + "/" + month + "/" + day;
  202.                 return dateString;
  203.         }
  204. }
clone this paste RAW Paste Data