Advertisement
Guest User

Untitled

a guest
Jan 16th, 2013
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.21 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement