Java 中年月日的问题

来源:百度知道 编辑:UC知道 时间:2024/09/28 13:27:11
输入一个日期 例如1980、10、10
输入以后的第n天时几月几号?
搞不太清楚逻辑

如果楼主用作应用开发..可以考虑java类库中的Date或者Calendar

如果只是研究算法可以参考下列代码
按楼主意图编写了以下代码,用MyDate存放日期.
class MyDate {
int year;
int month;
int day;

// 非闰年每月的天数
int[] days4MonthsOfNLY = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
// 闰年每月的天数
int[] days4MonthsOfLY = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

// 构造函数
MyDate(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
}

// 在当前日期上添加days天,返回得到的日期
MyDate addDate(int days) {
int[] days4Months = null;
if (isLeapYear(this.year)) {
days4Months = days4MonthsOfLY;
} else {
days4Months = days4MonthsOfNLY;
}

// 用于构建新对象
int newYear = year, newMonth = month, newDay = day;
if (day + days <= days4Months[month - 1]) {
// 如果n天后仍在本月
newDay = day + days;
} else {
// 如果n天后本月已经过完