问题描述:程序接受三个整数y、m、d作为输入参数,分别代表年、月、日;输入日期范围为1700年1月1日至2100年12月31日,超出范围或无效的输入给出错误提示;根据输入计算指定日期的后一天日期,输出后一天的年、月、日。
用到SimpleDateFormat ,Calendar ,Date类
package softTest;
import java.text.SimpleDateFormat;
import java.util.*;
public class Time {
/**
* author hanhexin
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int y = 0;
int m = 0;
int d = 0;
while (true) {
System.out.print("年分:");
y = sc.nextInt();//输入年
System.out.print("月分:");
m = sc.nextInt();//输入月
System.out.print("日:");
d = sc.nextInt();//输入日
if (y < 1700 || y > 2100) {
System.out.println("输入年数不在1700--2100之间,请重新输入");
continue;
}
if (m > 12 || m < 1) {
System.out.println("输入月数不在1--12之间,请重新输入");
continue;
}
// 1 3 5 78 10 12
if (m == 4 || m == 6 || m == 9 || m == 11) {
if (d > 30 || d < 1) {
System.out.println("4,6,9,,11日数应在1--30之间,请重新输入");
continue;
}
} else if (m == 2) {
if ((y % 4 == 0 && y % 100 != 00) || (y % 400 == 0)) {
if (d > 29 || d < 1) {
System.out.println("2月闰年最多29天,请重新输入");
continue;
}
}else {
if (d > 28 || d < 1) {
System.out.println("2月非闰年最多28天,请重新输入");
continue;
}
}
}else {
if (d > 31 || d < 1) {
System.out.println("月最多31天,请重新输入");
continue;
}
}
break;
}
//格式化输出日期
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Calendar date = Calendar.getInstance();
//System.out.println("m=" + m);
//将给定的日历字段设置为给定值。
date.set(Calendar.YEAR, y);
date.set(Calendar.MONTH, m -1);//一年中的第一个月是 JANUARY,它为 0,第m月值为m-1
date.set(Calendar.DAY_OF_MONTH, d);//一年中第一天的值为 1
/*两种 天数+1(明天)的方法*/
//后一个参数为1,表示+1即明天;参数为-1,表示-1即昨天 add,roll方法效果一样
//date.add(date.DAY_OF_YEAR, -1);//天数+1
date.roll(date.DAY_OF_YEAR, 1);//天数+1
Date dd = date.getTime();
System.out.println(df.format(dd));
}
}