编写日期程序需要考虑以下几个关键点:
输入年、月、日:
程序需要接受用户输入的年、月、日信息。
日期增加和减少:
程序应能处理日期的增加和减少,并输出新的日期。
闰年判断:
程序需要判断输入的年份是否为闰年,以便正确处理2月的天数。
日期有效性检查:
程序应检查输入的日期是否有效,例如月份是否在1到12之间,日期是否在1到该月最大天数之间。
```java
import java.util.Scanner;
public class MyDate {
private int year;
private int month;
private int day;
// 无参数构造方法,使用当前系统时间
public MyDate() {
this.year = Calendar.getInstance().get(Calendar.YEAR);
this.month = Calendar.getInstance().get(Calendar.MONTH);
this.day = Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
}
// 带参数的构造方法
public MyDate(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
}
// 增加若干天
public MyDate addDays(int days) {
Calendar cal = Calendar.getInstance();
cal.set(year, month, day);
cal.add(Calendar.DAY_OF_MONTH, days);
this.year = cal.get(Calendar.YEAR);
this.month = cal.get(Calendar.MONTH);
this.day = cal.get(Calendar.DAY_OF_MONTH);
return this;
}
// 减少若干天
public MyDate subtractDays(int days) {
Calendar cal = Calendar.getInstance();
cal.set(year, month, day);
cal.add(Calendar.DAY_OF_MONTH, -days);
this.year = cal.get(Calendar.YEAR);
this.month = cal.get(Calendar.MONTH);
this.day = cal.get(Calendar.DAY_OF_MONTH);
return this;
}
// 计算两个日期之间的天数差
public int daysBetween(MyDate other) {
Calendar cal1 = Calendar.getInstance();
cal1.set(year, month, day);
Calendar cal2 = Calendar.getInstance();
cal2.set(other.year, other.month, other.day);
return Math.abs(cal1.getTimeInMillis() - cal2.getTimeInMillis()) / (24 * 60 * 60 * 1000);
}
@Override
public String toString() {
return String.format("%04d-%02d-%02d", year, month + 1, day);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入日期(格式:yyyy-MM-dd):");
String input = scanner.nextLine();
String[] parts = input.split("-");
int year = Integer.parseInt(parts);
int month = Integer.parseInt(parts) - 1; // 月份从0开始
int day = Integer.parseInt(parts);
MyDate date = new MyDate(year, month, day);
System.out.println("输入的日期是:" + date);
System.out.println("增加10天后的日期是:" + date.addDays(10));
System.out.println("减少5天后的日期是:" + date.subtractDays(5));
System.out.println("与2025-01-14相差的天数是:" + date.daysBetween(new MyDate(2025, 1, 14)));
}
}
```
代码说明:
构造方法:
提供了无参数构造方法和带参数的构造方法。
增加和减少天数:
`addDays`和`subtractDays`方法分别用于增加和减少日期。
日期之间的天数差:
`daysBetween`方法计算两个日期之间的天数差。
主方法:
从