1. 日期(年、月、日)
2.+1天 -1天
3.返回当前日期的字符串
package mjh.week.day6; //约束要求 //1.year只能从1000-3000 //2.month只能从1-12 //3.day每个月都不同 public class Date{ private int year; private int month; private int day; public Date(int year, int month, int day) { if (!checkYear(year)) { throw new RuntimeException("year必须是[1000,3000]:year = " + year); } if (!checkMonth(month)) { throw new RuntimeException("month必须是[1,12]: month = " + month); } if (!checkDay(year, month, day)) { throw new RuntimeException("day必须满足正确的范围:day = " + day); } //这里已经可以保证数据一定是正确的,可以保存在属性之中了 this.year = year; this.month = month; this.day = day; } public String toString() { return String.format("%04d-%02d-%02d", year, month, day); } public void 往前一天() { day--; if (day > 0) { return; } month--; if (month == 0) { year--; month = 12; } day = 根据月取边界(year, month); } public void 往后一天() { day++; int dayBound = 根据月取边界(year, month); if (day <= dayBound) { return; } month++; day = 1; if (month <= 12) { return; } year++; month = 1; } private int 根据月取边界(int year, int month) { int dayBound; if (month == 2) { return isLeapyear(year) ? 29 : 28; } else { return DAY_OF_MONTH[month - 1]; } } private static final int[] DAY_OF_MonTH = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; private static boolean isLeapyear(int year) { if (year % 400 == 0) { return true; } return year % 4 == 0 && year % 100 != 0; } private static boolean checkDay(int year, int month, int day) { if (month != 2) { int i = month - 1; return day >= 1 && day <= DAY_OF_MONTH[i]; } if (isLeapyear(year)) { return day >= 1 && day <= 29; } return day >= 1 && day <= 28; } private static boolean checkMonth(int month) { return month >= 1 && month <= 12; } private static boolean checkYear(int year) { return year >= 1000 && year <= 3000; } }
package mjh.week.day6; public class UseDate { public static void main(String[] args) { Date d1 = new Date(2020, 1, 1); for (int i = 0; i <= 300; i++) { d1.往前一天(); if (i % 15 == 0) { System.out.println(d1.toString()); } } } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)